2010-10-27 104 views
14

最近我碰到以下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 

請指教。

回答

30

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

而不是保持sed的命令在一個單獨的文本文件,你可能想嘗試創建sed腳本。下面的文件,可以在你的數據文件,直接運行:

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

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