私は簡単なことをしようとしているので、grep
存在する行と存在しない行を取得しますgrep -v
。a.txt
b.txt
c.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'.'
-.
フィールド区切り文字として扱われます。ARGIND
ARGV
- 現在処理中のファイルに対するインデックス(コマンドライン引数配列)comm
- 配列一般的なa.txt
最初の2つのファイル(および)間b.txt
の項目