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

问题描述:

最近我碰到以下grep命令:如何让sed从脚本文件中读取脚本?

/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 

请指教。

您的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 

而不是保持sed的命令在一个单独的文本文件,你可能想尝试创建sed脚本。下面的文件,可以在你的数据文件,直接运行:

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

#!/bin/sed -f 
s/234/acn/ 
s/78gt/hit/