您能否讓我知道如何用另一個字符串替換服務器中文本文件或ksh
文件中存在的特定字符串?如何在UNIX shell腳本中用另一個字符串替換特定的字符串
例如: -
我目前在路徑/file_sys/file
10個文件在我所「結算」,在所有10個文件一詞取代「條例」。
您能否讓我知道如何用另一個字符串替換服務器中文本文件或ksh
文件中存在的特定字符串?如何在UNIX shell腳本中用另一個字符串替換特定的字符串
例如: -
我目前在路徑/file_sys/file
10個文件在我所「結算」,在所有10個文件一詞取代「條例」。
工作對我來說:
我創建了一個文件「測試」這一內容:「這是一個簡單的測試」。現在我執行這個調用sed
命令:
sed -i 's/ is/is not /' test
之後的文件「測試」包含此內容:「這不是一個簡單的測試」
如果您sed
實用程序不支持-i
標誌,然後有一個有點尷尬的解決方法:
sed 's/ is/is not /' test > tmp_test && mv tmp_test test
這應該工作。請找到測試。
$貓>文件1
我是BILL男孩
sed 's/[[:alnum:] [:cntrl:] [:lower:] [:space:] [:alpha:] [:digit:] [:print:] [:upper:] [:blank:] [:graph:] [:punct:] [:xdigit:]]BILL[[:alnum:] [:cntrl:] [:lower:] [:space:] [:alpha:] [:digit:] [:print:] [:upper:] [:blank:] [:graph:] [:punct:] [:xdigit:]]/BILLING/g' file1>file2
$貓文件2
我是一個BILLING男孩
無論單詞BILL在您的文件中出現的位置如何,這都會起作用。 @NeethuShaji –
txt文件只有BILL,沒有別的。 我試着通過在BILL結尾處輸入一個輸入法,它的工作原理是...... BILL被BILLING替換爲命令sed's/BILL/BILLING/g'Example.txt> Exam.txt –
但是上面的代碼不會要求你輸入:)。 @NeethuShaji –
使用sed
:
sed 's/\bBILL\b/BILLING/g' file
對於就地:
sed --in-place 's/\bBILL\b/BILLING/g' file
小for
循環可能協助來處理多個文件,而且在這裏我假設-i
選項不可用:
for file in $(grep -wl BILL /file_sys/file/*); do
echo $file
sed -e 's/\bBILL\b/BILLING/g' $file > tmp
mv tmp $file
done
這裏的發生的事情:
grep -w
搜索包含詞BILL
的所有文件(並且只有它) grep -l
清單的文件名(而不是內容)
$(....)
執行什麼括號內(命令替換)
for file in
遍歷列表中的每個項目(每個文件與BILL在裏面)
echo $file
打印每個文件名我們循環過
sed command
一詞取代BILL(這裏,用字邊界「\ b」的具體界定)與計費,爲tmp文件
mv command
移動tmp的文件恢復到原來的名稱(替代原)
你可以很容易地測試這個,而不需要實際改變任何東西 - 例如只是打印文件名,或者只是打印內容(以確保在更換原始文件之前已經得到了您所期望的內容)。
看看'sed'和'awk'工具。首先閱讀他們的手冊頁。 – arkascha
是的,我嘗試過使用sed -i's/BILL/BILLING/g'*但是我得到錯誤sed:非法選項 - 我 –
您本地'man'頁面記錄了'-i'標誌和您的'sed'命令纔不是?這聽起來有點奇怪... – arkascha