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