줄을 분할하고 특정 문자를 사용하여 새 줄로 인쇄합니다.

줄을 분할하고 특정 문자를 사용하여 새 줄로 인쇄합니다.

패턴이 일치하면 줄을 나누어 다음 줄에 인쇄해야 합니다.

내가 가지고 있는 것처럼:

ABC123xxx:: 2345 ABC345yyy:: 5678 ABC986zzz:: 7955

ABC패턴이 나타날 때 새 줄로 인쇄하고 싶습니다 .

ABC123xxx:: 2345
ABC345yyy:: 5678
ABC986zzz:: 7955

답변1

sed -E -e 's/ (ABC)/\n\1/g' 

이 명령은 ABC가 뒤에 오는 개행 문자 sed의 모든 인스턴스를 대체합니다 . 일치 항목의 일부( 앞에 공백 없이)를 캡처하여 교체 항목에 포함하는 데 ABC사용됩니다 .()ABC\1

예를 들어

$ echo 'ABC123xxx:: 2345 ABC345yyy:: 5678 ABC986zzz:: 7955'| 
    sed -E -e 's/ (ABC)/\n\1/g'
ABC123xxx:: 2345
ABC345yyy:: 5678
ABC986zzz:: 7955

답변2

그리고 sed:

$ sed -e 's/ ABC/\
ABC/g' <file
ABC123xxx:: 2345
ABC345yyy:: 5678
ABC986zzz:: 7955

답변3

이것을 시도해보십시오.

echo "ABC123xxx:: 2345 ABC345yyy:: 5678 ABC986zzz:: 7955" | awk '{for(i=1;i<=NF;i++) if(match($i,"ABC")>0) line=line "\n"$i;else line=line $i; sub("^\n","",line); print line}'

모든 필드를 포함하는 라인을 만들고 "ABC"로 시작하는 필드 앞에 개행 문자를 추가합니다. 마지막으로 첫 번째 개행 문자를 제거하고 인쇄합니다.

관련 정보