我有 2 个文件,一个有 2 列,另一个有 1 列。
第二个文件使用 排序sort -u
。
现在的任务是我需要将此列与第一个文件的第一列连接起来,该文件未排序。
那么语法是什么?将join -j 1 file2.txt sort -s -n -k 1 file1.txt
工作?
我想要的输出实际上是加入后文件 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