1

sed スクリプトを使用して、ファイル内の配列の内容を削除しようとしています。括弧 () のみを残すためにコンテンツを削除しようとしました。ただし、sed スクリプトを複数行にわたって動作させることはできません。

ファイルの現在の状態を変更しようとしています:

LIST = ( "content"
         "content1"
         "content3")

これに:

LIST = ()

ただし、私が使用している sed スクリプトは、ファイルを次のように変更するだけです。

LIST = ()
     "content"
     "content1"
     "content2"

sed -e 's/LIST=\([^)]*\)/LIST=() /g' filename

ファイルには、影響を与えたくない他のブラケットのセットがあることにも言及する必要があります。

例えば

LISTNUMBER2("CONTENT")  

空にしないでください。

4

2 に答える 2

1

別の sed ソリューション:

sed '/LIST = (/{:next;/)/{s/(.*)/()/;b;};N;b next;}'

特定の文字列を含むブロックを変更しないバージョンを次に示します (この例では「keepme」ですが、何でもかまいません)。

sed '/LIST = (/{:next;/)/{/keepme/b;s/(.*)/()/;b;};N;b next;}'

これは、タグがブロック内のどこにでもある閉じ括弧を見つけたにkeepme テストを行うためです。

于 2013-04-15T14:10:35.563 に答える