他のファイルから特定の文字列を含む行を削除する

他のファイルから特定の文字列を含む行を削除する
grep -v -x -f f2 f1

私はこれを試しましたが、私が持っているので動作しません

f2:

test 141.1.11.1
test2 8.18.8.8
4.4.4.4

f1:

test 1.1.1.1
test2 8.8.8.8
test3 4.4.4.4

test3 4.4.4.4含めるので、行を削除するのはアイデアですが、うまくいきませ4.4.4.4ん。私のコマンドには何の問題がありますか?

正確に入力すると削除されますが、4秒しか含まれていない場合は削除されません。

答え1

オプションを削除するだけです-x。そのオプションの目的は、部分ではなく行全体で与えられた正規表現を一致させることです。

grep -v -f file2 file1

上記のように、正規表現の一致ではなく文字列の一致が必要な場合は、-Fコマンドにオプションを追加してください。

grep -v -F -f file2 file1

答え2

#!/usr/bin/python
import re
mf=[]
k=open ('f2','r')
x=open('f1','r')
for b in x:
    mf.append(b.strip())

co_li=len(mf)

for f in  k:
    for d in range(0,co_li,1):
        if f.strip() in mf[d]:
            print "\n".join( mf[0:d]+mf[d+2:])

テストを経てうまく機能しました

test 1.1.1.1
test2 8.8.8.8

~                                               

関連情報