linux - 替换所有 *.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 . .
条线的原因(理论上)
解决方案
您不需要匹配整个字符串 - 只需替换前缀
sed -E -i -u 's/(REFERENCE[a-zA-Z_0-9]+\.png)/\.\/images\/\1/g' *.gpl
推荐阅读
- r - 在维基百科文章的成对比较中计算词法继承的最佳 R 实现是什么?
- c - C函数strcpy()随机改变一个字符
- c# - 如何在 Salesforce 中与 iFrame 交互?
- html - 在 WooCommerce 中强制重新加载 style.css
- powershell - 工作流程不尊重函数中定义的文件路径变量
- reactjs - 为什么单击时“to”道具会发生变化?
- javascript - 删除 span 标签背景颜色
- jmeter - 每次尝试向 Mendix 应用程序发送 xas 请求时,我都会在 JMeter 脚本响应中遇到 401 未授权
- sql - 如何在 COUNT 聚合中包含 0 (int) 结果?PostgreSQL
- c - 如何检查字符串是否已定义?