2012-10-07 100 views
0

除了sed以外,還有其他的選擇嗎? 我的意思是,這是否在shell腳本如何在shell腳本中編輯文件的內容?

cat file1命令,它包含以下內容:

How 
are 
you 

但是假設我要改變這個詞「如何」變成「誰」?

+0

是的,它被稱爲'vim' ... – 2012-10-07 05:45:58

+0

'shell腳本中的'vim'不是明顯的選擇,我們可以說。 –

回答

1

有多種替代sed,但sed可能是首選這個特定的操作工具。該方案包括:

  • ed
  • ex
  • 的Perl
  • 的Python
  • 紅寶石
  • awk

edex命令是SIM卡ILAR:

ed ff <<! 
g/How/s//Who/g 
w 
q 
! 

你可以寫ex而不是ed

perl -i.bak -p -e 's/\bHow\b/Who/g' ff 

awk '{ gsub(/How/, "Who"); print }' ff 

我不流利足夠Python或Ruby給慣用的解決方案。

sed,尤其是GNU sed-i選項,很方便也:

sed -i 's/How/Who/g' ff 

沒有-i選項(和-i選項不完全傻瓜型,如果你有一個白癡像我這樣用符號鏈接或多個鏈接到比賽中的一個單一的文件),你可以使用:

sed 's/How/Who/g' ff > ff.$$ 
cp ff.$$ ff 
rm -f ff.$$ 

或者,用陷阱,以確保無殘留的臨時文件:

tmp=ff.$$ 
trap "rm -f $tmp; exit 1" 0 1 2 3 13 15 
sed 's/How/Who/g' ff > ff.$$ 
cp ff.$$ ff 
rm -f ff.$$ 
trap 0 
+0

我試過sed,但由於某種原因,它代替了空白行而不是文件中的新單詞 –

+0

'ed'示例中的'q'命令是不必要的。 –