입력 파일이 있습니다.
A 123 name: 1 AAA
B 123 name: 2 AAA name: 3 BBB
C 234 name: 1 AAA name: 2 BBB name: 5 CCC
열이 "name:"인 경우 다음 열과 다음 열을 인쇄하고 싶습니다.
이것은 내 awk 코드입니다.
cat input.txt | awk '{for(i=1;i<=NF;i++)if($i == "name:")print $(i+1),$(i+2)}'
그러나 이 예에서는 아래와 같이 모든 열이 하나의 행에 나열됩니다.
1 AAA
2 AAA
3 BBB
1 AAA
2 BBB
5 CCC
다음과 같이 열을 인쇄하고 싶습니다.
1 AAA
2 AAA 3 BBB
1 AAA 2 BBB 5 CCC
답변1
같은 줄에 값을 인쇄하고 해당 행이 반복을 완료한 후 새 행을 삽입하려면 다음 print
으로 바꾸세요 .printf
awk '{{for(i=1;i<=NF;i++)if($i == "name:") printf $(i+1)" "$(i+2)" "} print ""; }' yourfile
산출:
1 AAA
2 AAA 3 BBB
1 AAA 2 BBB 5 CCC