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

文本内容

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 命令行的艺术 前言 基础 日常使用 文件及数据处理 系统调试 单行脚本 冷门但有用 仅限 OS X 系统 仅限 W...
    进击的诺基亚阅读 9,241评论 0 19
  • 本文笔记源自这里——[实验楼]欢迎大家在下面交流其中有问题的地方喜欢请点收藏,每日更新(全部已亲自实践). 一. ...
    东皇Amrzs阅读 9,574评论 7 54
  • http://www.jianshu.com/p/a34a2506bf1b
    眉眼如初_55e7阅读 1,324评论 0 0
  • 高不成 低不就的 你摸摸自家的兜里 有啥? 人家浓妆淡抹的 能把兜里的一说成仨 那一句缠绵人家能扯成 一千零一个童...
    本无痕阅读 2,563评论 15 18
  • 明天休息一天!木子早早入睡,师师去潮汕参加同学聚会,一个人不想浪费这难得的独处,打开木子的泡沫垫,坐在阳台地...
    打不死的麦兜阅读 3,177评论 0 0

友情链接更多精彩内容