【问题标题】:command to replace specific contents of all *.gpl files替换所有 *.gpl 文件的特定内容的命令
【发布时间】:2020-01-20 16:08:42
【问题描述】:

我的*.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" 

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

我想将生成的输出 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 . . 行(理论上)

【问题讨论】:

    标签: linux command


    【解决方案1】:

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

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

    【讨论】:

    • 我刚刚通过考虑您的回答更新了我的问题。我在 *.gpl 文件中有两次名称REFERENCE_。但我只想在第一次出现时进行更改。在设置输出行。
    • @jailaxmik 我已经更新了我的答案以仅匹配图像行,而不是每个 REFERENCE 前缀
    猜你喜欢
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    相关资源
    最近更新 更多