ab.txt
30 abcd
45 sadsad
ac.txt
50 ab
430 sadsad
我如何加入这些以便我能够
的abc.txt
30 abcd
50 ab
475 sadsad
第二列中的字符串虽然是
,但却是唯一的我尝试从第一个txt文件逐行读取并读取字符串并在第二个文件中使用grep搜索然后从中获取数字,同样从第二个文件逐行读取并获取不是的字符串在第一个
但是这个过程太烦人且最糟糕的方式, 任何好的程序都可以轻松加入吗?
答案 0 :(得分:4)
这适用于GNU awk
:
awk '{ sum[$2] += $1 } END { for (name in sum) print sum[name] " " name }' a b |
sort -n
<强>解释强>
当从文件中读取每一行时,变量$1
和$2
包含第一个和第二个字段(即值和字符串)。关联数组sum
使用字符串作为索引,因此它会累积与每个字符串关联的值。然后,在输入结束时(在读取最后一个文件之后),它循环遍历name
中每个字符串的sum
,并打印其总数及其名称。最后,它以数字方式对输出进行排序。