31

一部の行に「ERROR」という文字列が含まれるログファイルがあります。ERRORがないすべての行を削除して、修正が必要なものだけを確認できるようにします。私はvimで次のようなことをするつもりでした:

%s /!(エラー)//

エラー以外の行を空の文字列に置き換えます。

標準の正規表現でこれができるとは思いませんが、間違っているかもしれません...

4

5 に答える 5

54

コマンドを使用して、:g!一致しないすべての行を削除します。

:g!/ERROR/d
于 2009-07-22T00:15:44.193 に答える
8

vimでは、バッファー内のテキストに対して任意のフィルターコマンドを実行できます。例えば、

:%!grep ERROR

バッファ全体を、指定された正規表現に一致する行のみに置き換えます。

これは、単なる以外の場合にも役立ちgrepます。たとえば、バッファ内の行を。で並べ替えることができます:%!sort。または、Vコマンドを使用してブロックをマークしてから、任意の範囲のテキストに対して同じことを行うことができます:!filter-command(vim'<,'>は、現在マークされているブロックを示すために自動的に入力します)。

于 2009-07-22T00:35:37.893 に答える
1

* nixの場合、grep-vまたはawkを使用できます

awk '!/ERROR/' file | more 

Windowsマシンでは、findstrを使用できます

findstr /v /c:ERROR file | more
于 2009-07-22T00:32:29.283 に答える
1

ネガティブ先読みの使用は機能しました。

于 2010-04-05T18:26:51.570 に答える
0

負に一致する正規表現は^を使用します。[^E]はE以外のすべてに一致します。

于 2009-07-22T00:19:00.933 に答える