37

「+」または「-」で始まらないすべての行を削除する正規表現を見つける必要があります。

大きな差分ファイルの紙のコピーを印刷したいのですが、実際の差分の前後に 5 行ほど表示されます。

4

7 に答える 7

70

VIM で:

:g!/^[+-]/d

英訳は次のとおりです。

g!正規表現に一致しないすべての行に対して局所的に何かを行います: 行頭の後にorの^いずれかが続き、それらの行を削除する必要があります。+-d

于 2009-11-12T20:53:04.647 に答える
2

sed -e '/^[^+-]/d'

于 2009-11-12T20:50:00.753 に答える
0

diff -u <some args here> | grep '^[+-]'

または、余分な行をまったく生成できない可能性があります。

diff --unified=0 <some args>

于 2009-11-12T20:50:39.563 に答える
0
cat your_diff_file | sed '/^[+-]/!D'
于 2009-11-12T20:51:40.090 に答える
0
egrep "^[+-]" difffile >outputfile

一致しないものをすべて削除する代わりに、一致する行のみを表示します。:)

于 2009-11-12T20:53:19.870 に答える
0

正規表現に関してもっと複雑なことをする必要がある場合は、次のサイトを使用する必要があります: http://txt2re.com/

また、さまざまな言語のコード例も提供します。

于 2009-11-12T20:53:56.300 に答える
0
%!grep -Ev '^[+-]'

現在のファイルに対してインラインで実行され:v、大きなファイルの場合よりもかなり高速になる可能性があります。

Vim 7.4、Ubuntu 14.04、1M 行のログ ファイルでテスト済み。

単語を含まない行: https://superuser.com/questions/265085/vim-delete-all-lines-that-do-not-contain-a-certain-word/1187212#1187212

于 2017-03-10T09:06:25.797 に答える