コミュニケーション

コミュニケーション

私は簡単なことをしようとしているので、grep存在する行と存在しない行を取得しますgrep -va.txtb.txtc.txt

3つのファイルの例

a.txt:

a
b
c
d
e

up.txt:

a.up
b.up
c.up

dw.txt:

a.dw
b.dw

希望の出力:

c

次のコードを書いていますが、grep全体ではなく毎回1行のように見えます。$(sed...)

sed 's/.up//' /tmp/b.txt | grep -f /tmp/a.txt | grep -vf $(sed 's/.dw//' /tmp/c.txt)

ベストアンサー1

シングルクイックGNUの使用awk注文する:

awk -F'.' \
'{
     if (ARGIND == 1) a[$1];
     else if (ARGIND == 2 && $1 in a) comm[$1];
     else if (ARGIND == 3){
         delete a;
         if ($1 in comm) delete comm[$1]
     }
 }
 END{ for (i in comm) print i }' a.txt b.txt c.txt

出力:

c

  • -F'.'-.フィールド区切り文字として扱われます。
  • ARGINDARGV- 現在処理中のファイルに対するインデックス(コマンドライン引数配列)
  • comm- 配列一般的なa.txt最初の2つのファイル(および)間b.txtの項目

おすすめ記事