如何使sed从文件中读取其脚本?

sac*_*hin 21 unix sed

最近我遇到了以下grep命令:

/usr/xpg4/bin/grep -Ff grep.txt input.txt > output.txt
Run Code Online (Sandbox Code Playgroud)

根据我的理解,这意味着从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
Run Code Online (Sandbox Code Playgroud)

它不起作用,我收到以下错误:

sed: command garbled
Run Code Online (Sandbox Code Playgroud)

上述文件内容如下:

sed.txt

sed s/234/acn/ input.txt
sed s/78gt/hit/ input.txt
Run Code Online (Sandbox Code Playgroud)

input.txt中

234GH
5234BTW
89er
678tfg
234
234YT
tfg456
wert
78gt
gh23444
Run Code Online (Sandbox Code Playgroud)

sch*_*hot 38

sed.txt应该只包含sed命令:没有sed输入文件的前缀或后缀.在你的情况下,它应该是:

# sed.txt
s/234/acn/
s/78gt/hit/
Run Code Online (Sandbox Code Playgroud)

在输入时运行:

$ /usr/xpg4/bin/sed -f sed.txt input.txt
Run Code Online (Sandbox Code Playgroud)
acnGH
5acnBTW
89er
678tfg
acn
acnYT
tfg456
wert
hit
ghacn44


Kev*_*vin 18

您可能希望尝试创建sed脚本,而不是将sed命令保存在单独的文本文件中.下面的文件可以直接在您的数据文件上运行:

./myscript.sed inputfile.txt> outputfile.txt

#!/bin/sed -f
s/234/acn/
s/78gt/hit/
Run Code Online (Sandbox Code Playgroud)