コンテンツを除外するには、ファイルとしてgrep

コンテンツを除外するには、ファイルとしてgrep

私は次のコマンドを持っています:

grep -Pvi ".(\.var|\.foo|\.varfoo)$" myfile.txt > newfile.txt

注:.var、.foo、および.varfoo(および他の多くのエントリ)はmyfile.txtの行です。

私のファイル.txt:

.var
.foo
.varfoo
.xxx.var
.yyy.foo
.zzz.varfoo

このコマンドはうまく機能し、何をすべきかを行います(.var、.foo、.varfooで終わる行はすべて削除しますが、3つは保持します)。コマンドを実行した後:

新しいファイル.txt

.var
.foo
.varfoo

これで、コマンドに入れないように、.var、.foo、.varfooを "greplist.txt"に入れて "grep"が読み取られるようにする必要があります。

greplist.txt

.var
.foo
.varfoo

どうすればいいですか?

答え1

これには2つの課題があります。

  • -Pシングルモードのみサポート
  • ファイルの各行は、テキスト自体だけでなく完全なパターンでなければなりません。

だからそれを設定するgreplist.txt

.\.var$
.\.foo$
.\.varfoo$

その後実行

grep -vi -f greplist.txt myfile.txt > newfile.txt

あなたが探しているものを手に入れる必要があります。

関連情報