Linux学习之路Linux我用 Linux

【Shell笔记>实用】根据一个文本列索引提取另一个文本列

2018-06-08  本文已影响39人  王诗翔
文本内容

今天微信群有朋友讨论这样一个问题,怎么根据上图中所示的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粘贴,然后再转置回来。

上一篇 下一篇

猜你喜欢

热点阅读