编辑字符串中的文件我有文件,其中包含在第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 –