大きなテキストファイルに表示される次の3行グループを変更するには、Sedを使用して3行スライドウィンドウを実装する必要があります。
Fax: 05.11.22.33.44<LF>
<LF>
<LF>
これで:
Fax: 05.11.22.33.44<LF>
###
<LF>
これを行うには、次のコマンドラインを試しました(sedはmsdosバッチファイルで実行されますが、私のLinux bashでは機能しません)。
sed -i ":a;$!N;s/\nFax: \([ 0-9\.]*\n\n\);tenough;$!ba;:enough/\nFax: \1###\n/;$!ba;P;D" file.txt
何が問題なの?
ベストアンサー1
あなたの推測がP;D
正しい。残りは、置換が成功するまでパターン空間から文字列をプルしようとする試みが失敗したことです。これは必ずしも悪いわけではありませんが、確かにスライドウィンドウではありません。
最初の行から1行をインポートしてから使用する必要があります。N;P;D
ループ(したがって、パターンスペースには常に3本の行がある)と新しい行をインポートするたびに交換しようとします。
sed '1N;$!N;s/\(PATTERN\n\)\(\n\)$/\1###\2/;P;D' infile