Поскольку awk и perl тесно связаны ...
Эквиваленты Perl @ awk-решений Денниса:
Для печати второй строки:
perl -ne 'print if $. == 2' file
Для печати второго поля:
perl -lane 'print $F[1]' file
Для печати третьего поля пятой строки:
perl -lane 'print $F[2] if $. == 5' file
Perl-эквивалент решения @ Glenn:
Печать j-го поля i-й строки
perl -lanse 'print $F[$j-1] if $. == $i' -- -i=5 -j=3 file
Perl-эквиваленты решений @ Hai:
если вы ищете вторые столбцы, содержащие abc:
perl -lane 'print if $F[1] =~ /abc/' foo
... и если вы хотите напечатать только определенный столбец:
perl -lane 'print $F[2] if $F[1] =~ /abc/' foo
... и для определенного номера строки:
perl -lane 'print $F[2] if $F[1] =~ /abc/ && $. == 5' foo
-l
удаляет новые строки и добавляет их обратно при печати
-a
автоматически разбивает строку ввода на массив @F
, используя пробел в качестве разделителя
-n
цикл над каждой строкой входного файла
-e
выполнить код в кавычках
$F[1]
является вторым элементом массива, поскольку Perl начинается с 0
$.
это номер строки