【发布时间】:2016-10-20 18:21:46
【问题描述】:
我有 2 个文件。
文件 1 的数据如下:
def!:abcabc:abc123
sdf!:skdfkd:asd432
jkl!:kalsfs:kak323
文件 2 的数据如下:
def!:hi123
fjs!:aaaaa123
bab!:kfksfksasdf123
输出应该是:
abcabc:abc123:hi123
我编写了以下单行代码,但我使用的是 2 个数组:
awk -F ':' -v OFS=':' 'FNR==NR{a[$1] = $0;f[$1] = $2;next} ($1 in a) {print $2,$3,f[$1]}' file2 file1 > output
请解释一下简化版的工作原理。
问候,
安德鲁·史密斯
【问题讨论】:
-
看来你需要合并文件。如果是这样,请尝试使用
sort -m -
我正在合并文件,但我只需要特定的列。我已经为我的问题提供了一个解决方案,但是我觉得有一种更简单的方法。
-
sort只能合并特定列 -
使用 gnu 排序和 gnu join:
join -t: -o 1.2,1.3,2.2 <( sort -t: file1 ) <( sort -t: file2 ) -
@LarsFischer,您应该将其添加为答案