如何修改文件内容?

St.*_*rio 0 linux text-processing

Ubuntu 16.04

我有一些非常大的文件,因此无法手动修改它。我想改变所有出现的

<tag1>true</tag1>
Run Code Online (Sandbox Code Playgroud)

<tag1>false</tag1>
Run Code Online (Sandbox Code Playgroud)

Nom*_*mal 5

您可以使用

sed -e 's|<tag1>false</tag1>|<tag1>true</tag1>|g' -i file
Run Code Online (Sandbox Code Playgroud)

虽然我建议对文件的副本进行编辑,

sed -e 's|<tag1>false</tag1>|<tag1>true</tag1>|g' file > newfile
Run Code Online (Sandbox Code Playgroud)

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

less newfile
Run Code Online (Sandbox Code Playgroud)

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

sed -e 's|>false<|>true<|g' file > newfile
Run Code Online (Sandbox Code Playgroud)

也许

sed -e 's|>[Ff]alse<|>true<|g' file > newfile
Run Code Online (Sandbox Code Playgroud)

它同时更改>false<>False<>true<

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

diff --side-by-side file newfile | less
Run Code Online (Sandbox Code Playgroud)

但如果线路很长,它就不会真正起作用。在“统一的diff”格式是常用的,

diff -u file newfile | less
Run Code Online (Sandbox Code Playgroud)

其中具有开始的行-是从file行开头的+newfile,并用空间开始的行是共同的。