2012-03-18 10 views
2

ファイルがあり、パターンを別の文字列に置き換えたい。SEDを使用してパターンを置き換えると、余分な文字が表示される

#PBS -N bench1-M1-plt2-size15 
#PBS -o /home/results/bench1-M1-plt2-size15.out 
./run -d ./results/ --config=bench1-M1-plt2-size15.conf \ 
--results=bench1-M1-plt2-size15.res config/myConfig.txt -F 2000000 

出力ファイルは次のようになりますしかし、私は、このコマンドに

sed 's/M1-[^-]*-[^-]/M1-plt32-size10/g' filename 

を使用します。

#PBS -N M1-plt32-size100 
#PBS -o /home/mahmood/gem5/results/M1-plt32-size100.out 
./run -d ./results/ --config=bench1-M1-plt32-size100.conf \ 
--results=bench1-M1-plt32-size100.res config/myConfig.txt -F 2000000 

"size10" の後に余分な '0' 文字を注意してください。ご覧のように、SEDコマンドのサイズは10に設定されていますが、出力ファイルは「size100」です

何が問題なのですか?

答えて

3

正規表現が正しくありません。 [^-]は1つのハイフン以外の文字と一致します。私はこれがあなたの意図したものであると信じて:

sed 's/M1-[^-]*-[^\.]*/M1-plt32-size10/' filename 

OUTPUT:

#PBS -N bench1-M1-plt32-size10 
#PBS -o /home/results/bench1-M1-plt32-size10.out 
./run -d ./results/ --config=bench1-M1-plt32-size10.conf \ 
--results=bench1-M1-plt32-size10.res config/myConfig.txt -F 2000000 
+0

あなたは[^ \。] '何を説明することができます*'意味と 'との違いは何です[^ - ] * '?? – mahmood

+0

はい。 '[^ \ - ] *はハイフン' -'が見つかるまで0以上の文字を意味しますが、 '[^ \ - ] *'は0以上の文字を意味します。元のテキストでは 'M1-'の後にハイフンが1つしかないので、 '[^ - ] * - [^ \。] *'を使用して '-plt2-size15'をドット' .'の直前にマッチさせました。 – anubhava

+0

okありがとう私はそれを得た – mahmood

関連する問題