[英]how to edit a line with an extension in one file from the data of another file in 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.