>

입력 파일이 있습니다 :

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
    
    

관련 자료

  • 이전 networking - linux - 브리지 내부에서 가상 네트워크 사용
  • 다음 linux - 시스템 간 프로세스가 다른 프로세스와 어떻게 통신합니까?