我需要找出一个正则表达式来删除所有不以“+”或“-”开头的行。
我想打印一个大差异文件的纸质副本,但它在实际差异之前和之后显示了大约 5 行。
我需要找出一个正则表达式来删除所有不以“+”或“-”开头的行。
我想打印一个大差异文件的纸质副本,但它在实际差异之前和之后显示了大约 5 行。
在 VIM 中:
:g!/^[+-]/d
这是英文翻译:
g
!
lobally 对所有与正则表达式不匹配的行做一些事情:行首^
后跟+
or -
,而要做的是d
删除这些行。
sed -e '/^[^+-]/d'
diff -u <some args here> | grep '^[+-]'
或者您根本无法生成额外的行:
diff --unified=0 <some args>
cat your_diff_file | sed '/^[+-]/!D'
egrep "^[+-]" difffile >outputfile
而不是删除所有不匹配的内容,您只显示匹配的行。:)
如果你需要在正则表达式方面做一些更复杂的事情,你应该使用这个网站: http ://txt2re.com/
它还提供了许多不同语言的代码示例。
%!grep -Ev '^[+-]'
它是否内联在当前文件上,并且可以比:v
大文件快得多。
在 Vim 7.4、Ubuntu 14.04、1M 行日志文件上测试。