我有一个文件,想要用另一个字符串替换模式。
#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命令中,size设置为10,但输出文件为“size100”
问题是什么?我该如何解决?
答案 0 :(得分:3)
你的正则表达式不正确。您有[^-]
,它只匹配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