2011-08-01 4 views
1

私はsedを勉強しようとしていますが、問題が発生しました。私はと呼ばれるファイルを持って、私に説明してみましょう:anystringは、それが唯一の例だから、私がしたいコードがあることを意味しARRAY = ...という形式の行を削除するにはどうすればいいですか?セドと?

code.. 
ARRAY=(anystring); 
code.. 

。さて、sedを使って "ARRAY = ...;"という行を削除したいのですが、

私が試した:

sed "/ARRAY=[a-z]*;/d" in > out 

が私のために正常に動作している:ながら、

sed "/#ARRAY=.*;/d" in > out 

しかし、誰成功を収めました。問題は、 "ARRAY ="の後にすべての文字があることです(明らかにを除く)。

どうすればいいですか?

+2

を使用してください。古い質問への回答を受け入れることができます。 –

答えて

3

で開始する必要があります。あなたがコメントの中でスイスが示唆しているように、先頭の空白を受け入れる場合は、

sed '/^[ \t]*ARRAY=.*;/d' in >out 
3

最初のコマンドで「#」文字を削除します。 '#'文字はsed正規表現で特別な意味を持ちません。

1

sed "s/^ARRAY=.*;//g" <in >out いっそsed "/^ARRAY=.*;/d" <in >out

"S" とは、代用。したがって、s/ABC/DEF/は、ABCをDEFに置き換えることを意味します。 "g"はグローバルを意味するので、最初の行だけではなく、すべての行を削除します。行の先頭に^、ない#のように表現されて

sed '/^ARRAY=.*;/d' in >out 

^手段、ラインはこれを試してみてくださいARRAY

+0

私はこの答えが実際に質問に正しく対応しているとは思わない。まず、 'd'スイッチの代わりに 's'スイッチを不必要に使用します。次に、空白が 'ARRAY'の前に来るかもしれないという事実を無視します。第3に、実際のエラーがREGEXにあるという事実を見ている。 – Swiss