找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 11214|回复: 7

gawk如何将两个文件中的内容打印出来

[复制链接]
发表于 2018-8-18 22:45:05 | 显示全部楼层 |阅读模式
由于工作需要,需将要两个文本中的两列的数据打印在一行上显示出来,该如何实现呢?

文件1内容:
aaa|111|123
bbb|222|123
ccc|333|123

文件2的内容
hhh|111|123
iii|222|123
jjj|333|123

通过gawk实现这样的输出

aaa|hhh
bbb|iii
ccc|jjj
发表于 2018-8-19 00:36:45 | 显示全部楼层
导入到excel,删除不要的即可
发表于 2018-8-19 20:59:06 | 显示全部楼层
  1. gawk -F "|" "NR==FNR{a[FNR]=$1}NR>FNR{print a[FNR]""|""$1}" 1.txt 2.txt > 3.txt
复制代码
 楼主| 发表于 2018-8-19 22:02:07 | 显示全部楼层
本帖最后由 shootman2 于 2018-8-19 22:03 编辑

回复 3# Batcher


     Batcher大神!请收下我的膝盖。。。
     昨晚通宵搞到4点,仍然没有解决问题!!!您这一指点一下就解决问题了。。。
 楼主| 发表于 2018-8-19 22:09:13 | 显示全部楼层
回复 3# Batcher


    我理解了一下,这代码的原理是,在处理第一个文件的时候,先将$1字段的数据写入到一个数组中,然后在处理第二个文件时,
    将数组和第二个文件的$1一并打印。

    是这个思路呗?那我想问下,如果是有三个文件,要实现一楼的需求,该怎么实现呢?貌似好像没有另外一个FNR来标示正在处理第三个文件啊!
发表于 2018-8-20 08:40:53 | 显示全部楼层
回复 5# shootman2

办法肯定不只一种,awk 有个内建变量 FILENAME 了解一下?
发表于 2018-8-20 09:11:10 | 显示全部楼层
回复 5# shootman2
  1. gawk "ARGIND==1{...}ARGIND==2{...}ARGIND==3{...}" 1.txt 2.txt 3.txt
复制代码
 楼主| 发表于 2018-8-20 11:19:46 | 显示全部楼层
回复 7# Batcher


    已经按照大神您的指点完成了工作任务,再次感谢!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 23:38 , Processed in 0.019930 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表