乌班图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