grep 이름을 사용하여 여러 줄을 한 줄로 숨기기

grep 이름을 사용하여 여러 줄을 한 줄로 숨기기

이것 좀 도와주실 수 있나요?

item : name_1 
       213321654
       32549846546
item : name_2 
       8563161631
item : name_3
       96315242161
       73216510631
       51654316416

변환이 필요함

item : name_1  213321654 32549846546
item : name_2  8563161631
item : name_3  96315242161 73216510631  51654316416

답변1

이것은 grep이 아닌 awk의 작업입니다.

awk 'NF==1 { printf " %s", $1 } 
     NF>1 { printf "%s%s",l,$0; l="\n" ;} 
     END { printf "%s",l ;}'

주요 요령은 printf새 행 삽입을 방지하는 것입니다.

답변2

유명한 sed oneliner의 변형을 사용하여 조건부로 줄을 연결할 수 있습니다.

$ sed -e :a -e '$!N;s/\n[[:space:]]\{1,\}/ /;ta' -e 'P;D' file
item : name_1  213321654 32549846546
item : name_2  8563161631
item : name_3 96315242161 73216510631 51654316416

예시 보기Sed 한 줄 설명, 1부: 파일 간격, 번호 매기기, 텍스트 변환 및 교체

관련 정보