sedの2番目のパターンの後に挿入

sedの2番目のパターンの後に挿入

sedを使用してテキストファイルを編集しています。注文する:

sed -n -e '/pattern1/,/pattern2/p' test01.txt

モード1とモード2の境界を表示します。しかし、この後に新しい行を挿入するにはどうすればよいですかpattern2?私のsedバージョンは「i \」をラインコマンドバージョンとして認識しません。私はFreeBSDポートを実行しています。

ベストアンサー1

パターン2の後に新しい行のみを挿入したい場合は、これが機能します。

sed '/pattern2/s/$/\n/' file

[jaypal:~/Temp] cat file
some text
some text
some text pattern1
some text p
some text p 
some text p
some text pattern2
some text
some text

[jaypal:~/Temp] sed '/pattern2/s/$/\n/' file
some text
some text
some text pattern1
some text p
some text p 
some text p
some text pattern2

some text
some text

i\挿入用。beforeアドレスが挿入されます。新しい行が必要な場合は、\awhich isを使用できますappend

[jaypal:~/Temp] sed '/pattern2/ a\
' file
some text
some text
some text pattern1
some text p
some text p 
some text p
some text pattern2

some text
some text

/pattern2/ の後に新しい行を追加し、その間の行を表示するには、次のようにします。

[jaypal:~/Temp] sed -e '/pattern2/G' -ne '/pattern1/,/pattern2/p' file
some text pattern1
some text p
some text p 
some text p
some text pattern2

[jaypal:~/Temp] 

同様のawkソリューション -

[jaypal:~/Temp] cat file
some text
some text
some text pattern1
some text p
some text p 
some text p
some text pattern2
some text
some text

[jaypal:~/Temp] awk '/pattern1/,/pattern2/ END{print ""}' file
some text pattern1
some text p
some text p 
some text p
some text pattern2

[jaypal:~/Temp] 

おすすめ記事