команда для замены указанного c содержимого всех файлов * .gpl - PullRequest
0 голосов
/ 20 января 2020

У меня есть эта строка ниже в моем файле *.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 . . (теоретически)

1 Ответ

1 голос
/ 20 января 2020

Вам не нужно сопоставлять всю строку - просто замените префиксы

sed -E -i -u 's/(REFERENCE[a-zA-Z_0-9]+\.png)/\.\/images\/\1/g' *.gpl
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...