Как заставить sed читать его скрипт из файла? - PullRequest
21 голосов
/ 27 октября 2010

Недавно я наткнулся на следующую команду grep:

/usr/xpg4/bin/grep -Ff grep.txt input.txt > output.txt

, что, как я понимаю, означает, что из input.txt, grep материал, содержащийся в grep.txt, и вывод его в output.txt.

Я хочу сделать что-то подобное для sed, т.е. я хочу сохранить команды sed в отдельном файле (скажем, sed.txt) и применить их к входному файлу (скажем, input.txt) и создать выходной файл (скажем output.txt).

Я попробовал следующее:

/usr/xpg4/bin/sed -f sed.txt input.txt > output.txt

Это не работает, и я получаю следующую ошибку:

sed: command garbled

Содержимое файлов, упомянутых выше, выглядит следующим образом:

sed.txt

sed s/234/acn/ input.txt
sed s/78gt/hit/ input.txt

input.txt

234GH
5234BTW
89er
678tfg
234
234YT
tfg456
wert
78gt
gh23444

Ответы [ 2 ]

38 голосов
/ 27 октября 2010

Ваш sed.txt должен содержать только команды sed: без префикса с sed или суффикса с входным файлом.В вашем случае это, вероятно, должно быть:

# sed.txt
s/234/acn/
s/78gt/hit/

При запуске на ваш вход:

$ /usr/xpg4/bin/sed -f sed.txt input.txt
acnGH
5acnBTW
89er
678tfg
acn
acnYT
tfg456
wert
hit
ghacn44
18 голосов
/ 20 января 2014

Вместо того, чтобы хранить команды sed в отдельном текстовом файле, вы можете попробовать создать скрипт sed. Файл ниже может работать непосредственно с вашими файлами данных:

. / Myscript.sed inputfile.txt> outputfile.txt

#!/bin/sed -f
s/234/acn/
s/78gt/hit/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...