簡體   English   中英

如何在Linux中的文件中的一行編輯字符串

[英]How to edit string at a line in file in linux

我有在第30行包含文本的文件,該文本是:

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

由於與Unix兼容,Perl方法比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 

請注意,它僅更改了第四行。 命令中多余的\\字符用於轉義對sed具有特殊含義的/字符。

您可以使用vim查找並替換您的字符串http://vim.wikia.com/wiki/Search_and_replace或使用'sed'命令

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM