我需要在几百个Java文件中注释掉行。很容易注释掉这样一行:
sed 's-PATTERN-//PATTERN-' src/main/java/com/Test/test.java
我想知道是否可以在比赛前后注释掉上一行和下一行。
答案 0 :(得分:2)
我建议使用grep
删除这些行。
grep -B1 -A1 PATTERN file | grep -vFf- file
首先,您可以使用-B1
和-A1
获取PATTERN之前和之后的行。然后,您可以将三行结果传递给grep -v
,这将打印每个不匹配的行。
-f-
从STDIN获取模式,与-f /dev/stdin
-F
告诉grep将输入模式解释为固定字符串而不是正则表达式但您也可以将grep的输出转换为sed命令以注释掉匹配的行:
grep -A1 -B1 -n PATTERN file | sed -e 's/[^0-9].*$//' -e 's|$|s-^-//-|' | sed -f- file
这样做是将编号的grep -n
输出转换为4s-^-//-
...这是一个用于注释掉第4行的sed命令,然后将从grep创建的命令传递给sed。
答案 1 :(得分:2)
考虑使用Perl:
[Test]
public void TestParseEmptyName( )
{
string json = @"
{
""Row"":{
"""":123
}
}";
XmlDocument xdoc = JsonHelper.ConvertToXml( json );
}
这会将修改后的文件写入stdout。将它包装在shell中以将其写入所需文件,或perl -0pe 's!(.*)\n(PATTERN)\n(.*)!//$1\n//$2\n//$3!g' file.java
以了解如何在其中进行Perl编辑。