입력이 있습니다
text and numbers
name of section
72.01043451 0.013887 0.8416
64.76001571 0.015442 0.8556
1달러를 인쇄하고 싶어요
/ name of section/ { in_f_format=1; next}
(in_f_format & FNR==2) {print($1)}
빈 줄과 $1이 주어지면 두 번째 줄부터 인쇄하는 방법은 무엇입니까?
구문 오류입니다.
/ name of section/ { in_f_format=1; next}
(in_f_format & FNR==2) {print($1)}
다음 두 개는 작동하지 않습니다.
감사해요
원하는 출력:
72.01043451
64.76001571
답변1
존재하다 awk
:
$ awk '/name of section/ { line = FNR + 2 } line != 0 && FNR >= line { print $1 }' file
72.01043451
64.76001571
line
여기서는 패턴을 감지하고 인쇄하려는 줄( FNR + 2
"이 줄에 두 줄을 더한 것"을 의미) 에 변수를 설정합니다 . 지정된 줄에 도달하면 인쇄됩니다.
답변2
내가 당신의 의도를 정확하게 이해했다면
/ name of section/ { c=FNR;}
(FNR-c>=2 && c>0) {print $1}
패턴이 일치하면 c
현재 줄 번호로 설정되고, 패턴이 일치하는 줄 다음의 두 번째 줄 FNR
보다 크거나 같으면 첫 번째 필드가 인쇄됩니다. c+2
초기화되지 않으면 c
0이 되므로 파일의 두 번째 줄 전체를 인쇄하지 않으려면 추가 조건을 추가합니다 && c>0
.
답변3
테스트를 거쳐 잘 작동함
awk '/name of section/{x=NR+3}(NR<=x){print}' l.txt | awk 'NR>2{print $1}' filename
72.01043451
64.76001571