Sed 从多个文件中删除多行文字
我有一堆java文件,我想从中删除带有许可证的javadoc行[我在代码中更改它] 我正在寻找的模式是Sed 从多个文件中删除多行文字,sed,grep,multiline,Sed,Grep,Multiline,我有一堆java文件,我想从中删除带有许可证的javadoc行[我在代码中更改它] 我正在寻找的模式是 ^\*\*项目名称。*美国\.$ 但在不同的领域里是一致的 sed[或Windows/Linux中常用的编辑器]是否有一种方法可以搜索/替换多行模式?以下是我最喜欢的sed教程中的内容。是的。您是使用sed、awk、perl还是其他方法来解决这个问题 大多数正则表达式工具允许您指定多行模式。只需小心过于贪婪的正则表达式,否则它们会在注释之间匹配代码(如果存在) 下面是一个例子: /\*(?:.
^\*\*项目名称。*美国\.$
但在不同的领域里是一致的
sed[或Windows/Linux中常用的编辑器]是否有一种方法可以搜索/替换多行模式?以下是我最喜欢的sed教程中的内容。是的。您是使用sed、awk、perl还是其他方法来解决这个问题 大多数正则表达式工具允许您指定多行模式。只需小心过于贪婪的正则表达式,否则它们会在注释之间匹配代码(如果存在) 下面是一个例子:
/\*(?:.|[\r\n])*?\*/
perl -0777ne 'print m!/\*(?:.|[\r\n])*?\*/!g;' <file>
/\*(?:.|[\r\n])*\*/
perl-0777ne'打印m/\*(?:.|[\r\n])*?\*/!g、 "
打印出运行时的所有注释
在一起(?:符号必须为
用于非捕获括号/
不必逃脱,因为!
限定表达式。使用-0777
要启用slurp模式,请启用-n
自动阅读
(From:)可能仍有人时不时地在寻找这样的解决方案 使用awk查找要删除的线路。然后使用diff删除线路并让sed清理
awk "/^\* \* ProjectName /,/ USA\.$/" input.txt \
| diff - input.txt \
| sed -n -e"s/^> //p" \
>output.txt
警告:如果第一个模式存在,而第二个模式不存在,您将丢失第一个模式下的所有文本-因此首先检查该模式。这看起来很棒!。除了
diff
是哑模式之外!如果文件中有类似SSH2密钥的模式,并且您正试图删除其中一个,请不要使用此模式。它将从文件顶部占用一行然后从其他地方归档其余文件。