awk에서 행과 요소 선택
awk에서 $ 2가 두 번째 열이라는 것을 배웠습니다. i 번째 행과 i 번째 행과 j 번째 열의 요소를 지정하는 방법은 무엇입니까?
두 번째 줄을 인쇄하려면 :
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}'
특정 문자열로 열을 인쇄하려면 // 검색 패턴을 사용합니다. 예를 들어, abc가 포함 된 두 번째 열을 찾는 경우 :
awk '$2 ~ /abc/'
... 특정 열만 인쇄하려는 경우 :
awk '$2 ~ /abc/ { print $3 }'
... 그리고 특정 라인 번호의 경우 :
awk '$2 ~ /abc/ && FNR == 5 { print $3 }'
Dennis의 답변을 확장하려면 awk
의 -v
옵션을 사용 하여 i
및 j
값 을 전달하십시오 .
# print the j'th field of the i'th line
awk -v i=5 -v j=3 'FNR == i {print $j}'
awk와 perl은 밀접한 관련이 있기 때문에 ...
@Dennis의 awk 솔루션에 해당하는 Perl :
두 번째 줄을 인쇄하려면 :
perl -ne 'print if $. == 2' file
두 번째 필드를 인쇄하려면 :
perl -lane 'print $F[1]' file
다섯 번째 줄의 세 번째 필드를 인쇄하려면 :
perl -lane 'print $F[2] if $. == 5' file
@Glenn의 솔루션에 해당하는 Perl :
i 번째 줄의 j 번째 필드를 인쇄합니다.
perl -lanse 'print $F[$j-1] if $. == $i' -- -i=5 -j=3 file
@Hai의 솔루션에 해당하는 Perl :
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
autosplits에게 배열에 입력 라인을 @F
구분자로서 공백하여,
-n
입력 파일의 각 라인을 통해 루프
-e
시세 내의 코드를 실행
$F[1]
펄에서 시작되기 때문에, 어레이의 두 번째 요소는이 0
$.
라인 인 번호
이 작동 명령을 찾았습니다.
root @ gateway : / home / sshuser # aws ec2 describe-instances --instance-ids i-2db0459d | grep 'STATE \ | TAG'| awk 'FNR == 1 {print $ 1}'
상태
참고 URL : https://stackoverflow.com/questions/1506521/select-row-and-element-in-awk
'Nice programing' 카테고리의 다른 글
Yii2에서 깨끗한 URL 사용 (0) | 2020.11.22 |
---|---|
SQL Server 2005 쿼리를 CSV로 내보내는 방법 (0) | 2020.11.22 |
문자열에서 대문자가 연속적으로 발견되는지 확인하는 정규식? (0) | 2020.11.22 |
cmake가 작동하지 않고 qmake를 실행할 수 없습니다. (0) | 2020.11.22 |
Javascript의 사용자 입력에서 Date 객체로 시간을 구문 분석하는 가장 좋은 방법은 무엇입니까? (0) | 2020.11.22 |