Ответ 1
awk -v x=2 '{print $x}'
или в оболочке script:
#!/bin/sh num=$1 awk < /tmp/in -v x=$num '{print $x}' > /tmp/out
Предположим, что у меня есть текстовый файл с данными, разделенными пробелами в столбцы. Я хочу написать оболочку script, которая принимает в качестве ввода имя файла и число N и выводит только этот столбец. С awk я могу сделать следующее:
awk < /tmp/in '{print $2}' > /tmp/out
Этот код печатает второй столбец.
Но как бы обернуть это в оболочку script, чтобы в argv мог быть передан произвольный столбец?
awk -v x=2 '{print $x}'
или в оболочке script:
#!/bin/sh num=$1 awk < /tmp/in -v x=$num '{print $x}' > /tmp/out
awk '{print $'$myvar'}' < /tmp/in > /tmp/out
Где $myvar - ваш столбец переменной (целое число). Следите за инъекциями script!