패턴이 일치하면 줄을 나누어 다음 줄에 인쇄해야 합니다.
내가 가지고 있는 것처럼:
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"로 시작하는 필드 앞에 개행 문자를 추가합니다. 마지막으로 첫 번째 개행 문자를 제거하고 인쇄합니다.