使用脚本组织文件

时间:2019-06-21 10:40:35

标签: linux bash awk scripting

所以我有两个平面文件,格式如下:

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中的所有列

2 个答案:

答案 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==2NF==3记录分成两个哈希表/数组,然后链接两个数组并打印输出。

您也可以两次浏览文件以执行相同的逻辑。

我认为这为您提供了一个良好的开端。