所以我有两个平面文件,格式如下:
File1.txt
Customer1 12345 12346 12347
Customer2 14444 14445
File2.txt
12345 aol.com
12347 gmail.com
12346 google.com
14444 yahoo.com
14445 outlook.com
我需要能够将文件翻译成如下形式:
Customer1 aol.com google.com gmail.com
Customer2 yahoo.com outlook.com
这是我到目前为止所拥有的
$ awk 'NR==FNR {a[$1]=$2; next} $2 in a {print $0, a[$2]}' OFS='\t' File2.txt File1.txt
但是,它仅查看第一个文件的第2列,如何扩展它以查看file1中的所有列
答案 0 :(得分:1)
awk
可以遍历字段。试试这样的东西-
$: awk 'NR==FNR {a[$1]=$2; next;}
{ printf "%s ", $1;
for (i=2;i<=NF;i++) {
printf "%s ", a[$i];
};
printf "\n";
}' File2.txt File1.txt
Customer1 aol.com google.com gmail.com
Customer2 yahoo.com outlook.com
答案 1 :(得分:0)
您可以让awk浏览文件,将NF==2
和NF==3
记录分成两个哈希表/数组,然后链接两个数组并打印输出。
您也可以两次浏览文件以执行相同的逻辑。
我认为这为您提供了一个良好的开端。