首页 > 解决方案 > 替换所有 *.gpl 文件的特定内容的命令

问题描述

我的*.gpl文件中有以下行。

#WANTS TO MODIFY REFERENCE_OUTPUT_* HERE IN BELOW LINES
set output "REFERENCE_OUTPUT_fun1.png"
set output "REFERENCE_OUTPUT_fun2.png"
set output "REFERENCE_OUTPUT_fun3.png"
set output "REFERENCE_OUTPUT_fun4.png"
-
-
-
#DO NOT WANTS TO MODIFY REFERENCE_OUTPUT_* FOR BELOW LINE 
plot '/project/subfolder1/REFERENCE_OUTPUT_fun1.txt' u 1:2 w l axes x1y1 ti "Ref output"  lc rgb "red" 

*.gpl在转储文件夹中确实有至少 800 多个文件。

我想将生成的输出png文件转储到单独的images文件夹中。

所以,

我正在尝试以下命令:

sed -i 's/set output "REFERENCE_OUTPUT_*/set output "./images/REFERENCE_OUTPUT_*/g' {} *.gpl

但低于错误

错误

sed: -e expression #1, char 25: unknown option to `s'

预期输出

在所有*.gpl文件中,上述设置的输出行从:

set output "REFERENCE_OUTPUT_fun1.png"

set output "./images/REFERENCE_OUTPUT_fun1.png"

更新:

*.gpl文件还有:

plot '/project/subfolder1/REFERENCE_OUTPUT_fun1.txt' u 1:2 w l axes x1y1 ti "Ref output"  lc rgb "red" 

所以在上面的行中REFERENCE_OUTPUT_fun1.txt也有REFERENCE_OUTPUT_fun1我不想改变的名字。所以这就是我使用set output "REFERENCE_OUTPUT_*它只会修改这set output . . 条线的原因(理论上)

标签: linuxcommand

解决方案


您不需要匹配整个字符串 - 只需替换前缀

sed -E -i -u 's/(REFERENCE[a-zA-Z_0-9]+\.png)/\.\/images\/\1/g' *.gpl

推荐阅读