パターンが一致する場合は、行を分割して次の行に印刷する必要があります。
私が持っているように:
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」で始まるフィールドの前に改行文字を追加します。最後に、最初の改行文字を削除して印刷します。