Подтвердить что ты не робот

Как напечатать N-й столбец текстового файла с помощью AWK, используя argv

Предположим, что у меня есть текстовый файл с данными, разделенными пробелами в столбцы. Я хочу написать оболочку script, которая принимает в качестве ввода имя файла и число N и выводит только этот столбец. С awk я могу сделать следующее:

awk < /tmp/in '{print $2}' > /tmp/out

Этот код печатает второй столбец.

Но как бы обернуть это в оболочку script, чтобы в argv мог быть передан произвольный столбец?

4b9b3361

Ответ 1

awk -v x=2 '{print $x}'

или в оболочке script:

#!/bin/sh
num=$1
awk < /tmp/in -v x=$num '{print $x}' > /tmp/out

Ответ 2

awk '{print $'$myvar'}' < /tmp/in > /tmp/out

Где $myvar - ваш столбец переменной (целое число). Следите за инъекциями script!