Select row and element in awk

前端 未结 4 891
温柔的废话
温柔的废话 2021-01-29 18:17

I learned that in awk, $2 is the 2nd column. How to specify the ith line and the element at the ith row and jth column?

4条回答
  •  滥情空心
    2021-01-29 19:07

    Since awk and perl are closely related...


    Perl equivalents of @Dennis's awk solutions:

    To print the second line:
    perl -ne 'print if $. == 2' file

    To print the second field:
    perl -lane 'print $F[1]' file

    To print the third field of the fifth line:
    perl -lane 'print $F[2] if $. == 5' file


    Perl equivalent of @Glenn's solution:

    Print the j'th field of the i'th line

    perl -lanse 'print $F[$j-1] if $. == $i' -- -i=5 -j=3 file


    Perl equivalents of @Hai's solutions:

    if you are looking for second columns that contains abc:

    perl -lane 'print if $F[1] =~ /abc/' foo

    ... and if you want to print only a particular column:

    perl -lane 'print $F[2] if $F[1] =~ /abc/' foo

    ... and for a particular line number:

    perl -lane 'print $F[2] if $F[1] =~ /abc/ && $. == 5' foo


    -l removes newlines, and adds them back in when printing
    -a autosplits the input line into array @F, using whitespace as the delimiter
    -n loop over each line of the input file
    -e execute the code within quotes
    $F[1] is the second element of the array, since Perl starts at 0
    $. is the line number

提交回复
热议问题