2012-02-08 10 views
14

文字列をワイルドカードに置き換えたいが、動作しない。ワイルドカード付きSEDを使用

文字列は "いくつかの文字列-8" のように見える

私は

sed -i 's/string-*/string-0/g' file.txt 

を書きましたが、出力は

some-string-08 

答えて

25

あるアスタリスク(*)の「ゼロまたはそれ以上の意味前の項目 "。あなたが一致する場合は、任意の文字列と一致するように(つまり、任意の単一文字を0回以上)したい場合は

任意の一文字だから

sed -i 's/string-.*/string-0/g' file.txt 
+0

私の質問は不完全だったかもしれません....あなたのコマンドはこのfienのために働きます。しかし、 'some-string-8 -x --command acommand'があれば、そのコマンドを実行すると' some-string-0'が出力されます。それ以降はすべての文字が削除されます。 'some-string-0 -x --command acommand' – mahmood

+0

ok最初のコマンドは何ですか? – mahmood

+0

置換文字列にワイルドカードを使用する場合はどうしたらいいですか? 例: 'AAA。* BBB'を 'CCC。* DDD'に置き換えます。 – user2561747

5

、という概念を使用し

sed -i 's/string-./string-0/g' file.txt 

を使用します正規表現の「ワイルドカード」は少し違って動作します。 "任意の文字"と一致させるために、 "。"を使用します。 "*"修飾語は、何度も一致することを意味します。

関連する問題