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
アドレスが挿入されます。新しい行が必要な場合は、\a
which 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]