所以我想創建一個腳本,它需要3個參數 - 文件路徑,替換確切詞以及替換它的內容。如何創建這樣的事情?如何使用.SH文件腳本替換文本文件中的文本?
一般來說,我want6它有API像sudo script.sh "C:/myTextDoc.xml" "_WORD_TO_REPLACE_" "WordTo Use"
所以我想創建一個腳本,它需要3個參數 - 文件路徑,替換確切詞以及替換它的內容。如何創建這樣的事情?如何使用.SH文件腳本替換文本文件中的文本?
一般來說,我want6它有API像sudo script.sh "C:/myTextDoc.xml" "_WORD_TO_REPLACE_" "WordTo Use"
像這樣的事情?
#!/bin/bash
sed -e "s/$2/$3/g" <$1 >$1.$$ && cp $1.$$ $1 && rm $1.$$
或者,您可以使用單個命令
sed -i -e "s/$2/$3/g" $1
燕建議。我通常自己使用第一種形式。我看到系統不支持-i
(SunOS)。
這將在作爲第一個參數傳遞的文件中用第三個參數替換第二個參數的所有實例。例如,./replace file oldword newword
你並不需要一個腳本,一個簡單的sed會做(如果你在cygwin下或POSIX兼容的操作系統上運行):
sed -i '' 's/_WORD_TO_REPLACE_/WordTo Use/' "C:/myTextDoc.xml"
紅寶石(1.9+)
$ ruby -i.bak -ne 'print $_.gsub(/WORD_TO_REPLACE/,"New Word")' /path/to/file
sed能夠在不需要手動創建臨時文件的情況下編輯文件。 – yan 2011-03-29 19:23:52
而不是3個命令和一個臨時文件「sed -i」s/$ 2/$ 3/g「$ 1」可以正常工作。 – anubhava 2011-03-29 19:26:12
@yan Neat,我不知道:-) – Jonathan 2011-03-29 19:26:17