2つのファイルがあり、1つに2つの列があり、もう1つに1つの列があります。
2番目のファイルはソートを使用しますsort -u
。
これで、作業は、この列をソートされていない最初のファイルの最初の列と組み合わせる必要があることです。
それでは構文は何ですか?動作しますかjoin -j 1 file2.txt sort -s -n -k 1 file1.txt
?
私が望む出力は、実際に結合した後のファイル2の2番目の列であり、その中にある唯一の項目です。
ファイル2
1
2
3
ファイル1
2 500
1 5000
1 300
3 3000
3 300
4 450
出力
5000
300
500
3000
答え1
<(...)
ここでは、非標準プロセス交換()を使用する必要はありません。
sort file1 | join -o1.2 - file2 | uniq
答え2
join file2.txt <(sort file1.txt) | awk '{print $2}'
答え3
sort
+を使用する方法awk
。安定モードでは、他のファイルを最初の数字でソートしています。どのawk
キーを比較しましたか?ファイル1マッチキーファイル2繰り返さないで、以下を印刷してください。
sort -snk1,1 file1 | awk '
FNR == NR {
keys[ $1 ] = 1;
next;
}
!values[ $2 ] && keys[ $1 ] {
printf "%s\n", $2;
values[ $2 ] = 1;
}
' file2 -
出力:
5000
300
500
3000