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

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

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

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

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

24
задан Good Person 20 August 2012 в 03:53
поделиться

2 ответа

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

или в сценарии оболочки:

#!/bin/sh
num=$1
awk < /tmp/in -v x=$num '{print $x}' > /tmp/out
35
ответ дан Ray 20 August 2012 в 03:53
поделиться
awk '{print  

, Где $myvar является Вашим переменным столбцом (целое число). Не упустите инжекции сценария!

$myvar'}' < /tmp/in > /tmp/out

, Где $myvar является Вашим переменным столбцом (целое число). Не упустите инжекции сценария!

6
ответ дан strager 20 August 2012 в 03:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: