2017-09-05 13 views
-1

編輯字符串中的文件我有文件,其中包含在第30行文字是:如何在一行在linux

Icon="\<some path which we do not know\icon.png" 

我想與上述取代:

Icon="\home\user\Img\Icons\icon.png" 

什麼最好的方式來做到這一點。?

謝謝。

回答

2

最佳方式:

perl -pi -e 's/\\<some path which we do not know/\\home\\user\\Img\\Icons/' text.txt 

Perl的方法比sed的更優選的,因爲Unix的兼容性。

0

你可以使用vim查找和替換你的字符串http://vim.wikia.com/wiki/Search_and_replace或使用「sed的」命令

+0

在這種情況下,我不知道路徑。它可能是任何東西,那我該如何搜索它。另外如果可能的話,你可以舉例 –

+0

也可以使用正則表達式字符串來找到它 –

+0

謝謝。但你能舉出任何例子嗎?我是新來正則表達式或sed –

1

您可以使用編輯器手動執行此操作,或者如果你喜歡做非交互方式,你可以用小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具有特殊含義的/字符。