sedから特定の行を置き換えから除外

sedから特定の行を置き換えから除外

特定の行を除くいくつかの句読点を削除したいと思います。たとえば、sedこれらの, : { } [ ]マーカーだけを削除し、1、4〜7、38、39行は削除したくありません。どうやってこれを達成できますか?

ベストアンサー1

ブロックの後にブロックを追加して、置き換えから除外できます。

sed -e '1!{ 4,7!{ 38,39! s/[][,:{}]//g ;}' -e '}' file_in > file_out

はい(短くするために異なる範囲を使用):

$ printf 'line %s , : { } [ ]\n' {1..10} | sed -e '1!{ 4,6!{ 8,9! s/[][,:{}]//g ;}' -e '}'
line 1 , : { } [ ]
line 2
line 3
line 4 , : { } [ ]
line 5 , : { } [ ]
line 6 , : { } [ ]
line 7
line 8 , : { } [ ]
line 9 , : { } [ ]
line 10

おすすめ記事