如何在linux中的文件行中编辑字符串

时间:2017-09-05 07:31:54

标签: linux

我的文件包含第30行的文字:

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

我想用以下内容替换:

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

最好的方法是什么。?

感谢。

3 个答案:

答案 0 :(得分:2)

最佳方式:

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

由于Unix的兼容性,Perl方法比sed更受欢迎。

答案 1 :(得分: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具有特殊含义。

答案 2 :(得分:0)

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