今天微信群有朋友讨论这样一个问题,怎么根据上图中所示的2.txt
第一列作为索引,提取1.txt
中对应的列。
简单使用join
命令显然不能完成这样一个任务,但是我们仔细观察文本1可以发现如果将它转置就符合join
的基本条件了,这时候只需要到网上找别人写好的进行行列互换的脚本就可以了,并不需要自己费心费心进行循环计算。
$ awk '{for(i=0;++i<=NF;)a[i]=a[i]?a[i] FS $i:$i}END{for(i=0;i++<NF;)print a[i]}' \
1.txt | join - 2.txt | \
awk '{for(i=0;++i<=NF;)a[i]=a[i]?a[i] FS $i:$i}END{for(i=0;i++<NF;)print a[i]}'
操作就是先转置,然后使用join
粘贴,然后再转置回来。