Использование SED для замены шаблона приводит к появлению дополнительных символов - PullRequest
2 голосов
/ 18 марта 2012

У меня есть файл, и я хочу заменить шаблон другой строкой.

#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 

Обратите внимание на дополнительный символ «0» после «size10». Как вы можете видеть, в команде SED размер установлен равным 10, однако выходной файл имеет размер «size100»

В чем проблема и как я могу это исправить?

1 Ответ

3 голосов
/ 18 марта 2012

Ваше регулярное выражение неверно.У вас есть [^-], который будет соответствовать только 1 не дефису.Я считаю, что это то, что вы намеревались:

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

ВЫХОД:

#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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...