sedを使用して改行文字を挿入しますか?

sedを使用して改行文字を挿入しますか?

ディレクトリに次の単語が表示されるテキストファイルがたくさんあります。

GSM89103AATF

実際、数字は変更される可能性があるため、別の例になる可能性がありますGSM89089AATF。これらのイベントをGSM89089\nAATF新しい行挿入に置き換える必要があります。これを作成するために使用できますかsed

ベストアンサー1

GNUを使用できますsed

 $ sed -r 's/(GSM[0-9]{5})(AATF)/\1\n\2/' file.in >file.out

このパターンは、2つの別々の捕捉グループの第1の部分と一致し、次に第2の部分と一致する。最初の部分の後には常にGSM5桁の数字が続くと仮定します。置き換えは、単に2つのグループ間に改行を使用してキャプチャしたデータを貼り付けることです。

-r拡張正規表現を使用しているため、これが必要です。一部の実装では、これらの型の代わりに正規表現をsed使用します。-E-r

GNUなしのシステムsed

$ sed 's/\(GSM[0-9]\{5\}\)\(AATF\)/\1\
> \2' file.in >file.out

つまり、EREの代わりにBREを使用して-rGNU拡張を削除するには、aを追加してから\Enterを押して\1から、次の行で置換パターンを続行します。 >あなたが入力するのではなく、プロンプトです。

おすすめ記事