3

2 つのテキスト ファイルがあり、ファイル A にファイル B の文字列を含むリムーバー行が必要です

ファイル A:

joe     ball     1335
john    dyer     1365
dylan   fisher   1795
ian     gill     1913
eric    kelly    1101

ファイル B:

1795
1913

そして、私はBashコードが次のような結果を得たいと思っています:

joe     ball     1335
john    dyer     1365
eric    kelly    1101

このコードを試してみましたが、答えがうまくいきませんでした

$ grep -vwF -f A B
$ awk -F'[ ,]' 'FNR==NR{a[$1];next} !($4 in a)'
4

3 に答える 3

0

使用grep:

$ grep -v -f B A
joe     ball     1335
john    dyer     1365
eric    kelly    1101

これは最も単純ですが、状況によっては衝突が発生します。Bたとえば、最初に少し混乱した場合(検索文字列のsed最初と最後にスペースを追加します):$

$ sed 's/$/$/;s/^/ /' B
 1795$
 1913$

プロセス置換で使用します。

$ grep -v -f <(sed 's/$/$/;s/^/ /' B) A
joe     ball     1335
john    dyer     1365
eric    kelly    1101
于 2016-12-19T09:41:45.423 に答える