Как заставить sed прочитать файл script из script?
Недавно я наткнулся на следующую команду 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
Пожалуйста, совет.
Ответы
Ответ 1
Ваш 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
Ответ 2
Вместо того, чтобы сохранять команды sed в отдельном текстовом файле, вы можете попробовать создать sed script. Файл ниже может запускаться непосредственно в ваших файлах данных:
./myscript.sed inputfile.txt > outputfile.txt
#!/bin/sed -f
s/234/acn/
s/78gt/hit/