Возможно, составьте случайный ключ, затем используйте lower_bound для нахождения самого близкого ключа на самом деле содержавшим.
Чтобы напечатать вторую строку:
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}'
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}'
Чтобы напечатать столбцы с определенной строкой, вы используете // шаблон поиска. Например, если вы ищете второй столбец, содержащий abc:
awk '$2 ~ /abc/'
... и если вы хотите напечатать только определенный столбец:
awk '$2 ~ /abc/ { print $3 }'
... и для определенного номера строки:
awk '$2 ~ /abc/ && FNR == 5 { print $3 }'