Выберите строку и элемент в awk

Возможно, составьте случайный ключ, затем используйте lower_bound для нахождения самого близкого ключа на самом деле содержавшим.

66
задан Ivan Aracki 18 November 2019 в 11:36
поделиться

3 ответа

Чтобы напечатать вторую строку:

awk 'FNR == 2 {print}'

Чтобы напечатать второе поле:

awk '{print $2}'

Чтобы напечатать третье поле пятой строки:

awk 'FNR == 5 {print $3}'

Вот пример со строкой заголовка и (избыточными) описаниями полей :

awk 'BEGIN {print "Name\t\tAge"}  FNR == 5 {print "Name: "$3"\tAge: "$2}'

Кстати, есть способы лучше выровнять столбцы, чем "\ t \ t".

Используйте exit , чтобы остановить, как только вы напечатали нужную запись, если нет причин для обработать весь файл:

awk 'FNR == 2 {print; exit}'
146
ответ дан 24 November 2019 в 14:49
поделиться

To expand on Dennis's answer, use awk's -v option to pass the i and j values:

# print the j'th field of the i'th line
awk -v i=5 -v j=3 'FNR == i {print $j}'
22
ответ дан 24 November 2019 в 14:49
поделиться

Чтобы напечатать столбцы с определенной строкой, вы используете // шаблон поиска. Например, если вы ищете второй столбец, содержащий abc:

awk '$2 ~ /abc/'

... и если вы хотите напечатать только определенный столбец:

awk '$2 ~ /abc/ { print $3 }'

... и для определенного номера строки:

awk '$2 ~ /abc/ && FNR == 5 { print $3 }'
26
ответ дан 24 November 2019 в 14:49
поделиться
Другие вопросы по тегам:

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