編輯字符串中的文件我有文件,其中包含在第30行文字是:如何在一行在linux
Icon="\<some path which we do not know\icon.png"
我想與上述取代:
Icon="\home\user\Img\Icons\icon.png"
什麼最好的方式來做到這一點。?
謝謝。
編輯字符串中的文件我有文件,其中包含在第30行文字是:如何在一行在linux
Icon="\<some path which we do not know\icon.png"
我想與上述取代:
Icon="\home\user\Img\Icons\icon.png"
什麼最好的方式來做到這一點。?
謝謝。
最佳方式:
perl -pi -e 's/\\<some path which we do not know/\\home\\user\\Img\\Icons/' text.txt
Perl的方法比sed的更優選的,因爲Unix的兼容性。
你可以使用vim查找和替換你的字符串http://vim.wikia.com/wiki/Search_and_replace或使用「sed的」命令
您可以使用編輯器手動執行此操作,或者如果你喜歡做非交互方式,你可以用小shell管道和sed
。
sed `3 s/big path/custom path/` input_file.txt
其中3
是行號,big path
是你想要的更換和custom path
就是你要替換它。 input_file.txt
是您的輸入文件。這會將替換的文件打印到屏幕上,您可以使用>
運算符將其重定向到另一個文件。
舉一個具體的例子,假設我有這個文件(input_file.txt
)
Header
Random test
/bad/path/to/some/directory/icon.png
/bad/path/to/some/directory/icon.png
Footer
現在我要像這樣運行我的命令。
cat input_file.txt | sed '4 s/\/bad\/path\/to\/some\/directory\//\/home\/noufal\//'
,我得到
Header
Random test
/bad/path/to/some/directory/icon.png
/home/noufal/icon.png
Footer
發現,它已經改變了只有4號線。該命令中的額外\
字符將轉義對sed
具有特殊含義的/
字符。
在這種情況下,我不知道路徑。它可能是任何東西,那我該如何搜索它。另外如果可能的話,你可以舉例 –
也可以使用正則表達式字符串來找到它 –
謝謝。但你能舉出任何例子嗎?我是新來正則表達式或sed –