2017-09-05 43 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具有特殊含义的/字符。