쉘 스크립트 출력 형식

쉘 스크립트 출력 형식

다음 형식의 파일이 있습니다.

root            0       system          0  
                        bin             2
                        sys             3
                        security        7
                        cron            8
                        audit           10
                        lp              11
daemon          1       staff           1  
bin             2       bin             2  
                        sys             3
                        adm             4
sys             3       sys             3  

쉘 스크립트를 사용하여 새로운 파일 형식으로 변환하고 싶습니다.

root            system,bin,sys,security,cron,audit,lp
daemon          staff
bin             bin,sys,adm
sys             sys

답변1

즉시 사용 가능한 awk솔루션:

awk 'NF==4 && NR>1 {printf "\n" ; } 
     NF==4 { printf "%-10s %s",$1,$3} 
     NF==2 { printf ",%s",$1} 
     END   { printf "\n" ; } '

어디

  • NF필드 수(열 수)입니다.
  • NR레코드 수(줄 번호)입니다.
  • 다양한 조건에서 인쇄할 내용을 선택하고,
  • printf후행 새 줄은 인쇄되지 않습니다.

답변2

perl -lane '
   if ( @F == 4 ) {                 # num fields are 4
      print $result if $. > 1;      # in case we"re not @ BOF, show result
      $result = join "\t", @F[0,2]; # initialize result
   } else {
      $result .= ",$F[0]";          # append result
   }
   eof && print $result;            # on the last line, show result
' filename

답변3

perl -0pe 's/\h+\d+\h*\n\h+/,/g;  s/\h+\d+//g' ex
  • 첫 번째 대체는 숫자를 대체한 다음 \n...spaces 입니다 .,
  • 두 번째 대체는 다른 숫자를 제거합니다.

관련 정보