如何修改文件内容?

如何修改文件内容?

乌班图16.04

我有一些相当大的文件,因此无法手动修改。我想更改所有出现的

<tag1>true</tag1>

<tag1>false</tag1>

答案1

您可以使用

sed -e 's|<tag1>false</tag1>|<tag1>true</tag1>|g' -i file

尽管我建议对文件的副本进行编辑,

sed -e 's|<tag1>false</tag1>|<tag1>true</tag1>|g' file > newfile

并用于less检查新内容是否可以接受; IE

less newfile

编辑:注意g模式末尾的修饰符。如果一行上可以有多个匹配项,则这是必要的。当g出现时,意味着一行中的所有匹配项都被替换。此外,您可以考虑只考虑而不是完整的标签

sed -e 's|>false<|>true<|g' file > newfile

也许

sed -e 's|>[Ff]alse<|>true<|g' file > newfile

>false<这将和都更改>False<>true<.

使用上述命令之一后,您可以用来diff比较两个文件。一种选择是

diff --side-by-side file newfile | less

但如果队伍很长,它就不起作用了。这“统一差异”常用的格式,

diff -u file newfile | less

-其中以 from开头的行、以from 开头file的行和以空格开头的行是两者共有的。+newfile

答案2

如果您只想替换确切出现的

<tag1>true</tag1>

<tag1>false</tag1>

您可以使用

sed -r 's@<(tag1)>true</\1>@<\1>false</\1>@g' infile >outfile

或者

sed -ri 's@<(tag1)>true</\1>@<\1>false</\1>@g' file

如果您不想将更改的数据写入新文件。

答案3

通过命令很容易实现sed
赶紧跑:

sed 's/true/false/' file > newfile

相关内容