unix - awk 比较两个文件并用 NA 填充空白行
问题描述
我正在尝试使用来自awk 的类似命令比较两个文件中的列,估算另一列的值,并查看与来自一个文件的我的 awk 搜索列类似的各种问题 ,如果匹配来自两个文件的打印列, 如何导入其他列中的字段对应于两个文件中的一个公共字段,在所有不匹配的列中具有“NA”, awk 比较 2 个文件,文件中的 2 个字段不同的顺序,打印或合并匹配和非匹配行 与具有更多字段但我的文件无法让它工作。我还阅读了http://theunixshell.blogspot.com/2012/12/i-have-two-files-file-1-contains-3.html以查看它是否有效,但我仍然遇到问题:
文件 1:
xx NC1 12 13 ! pro
xy NC1 15 17 ! pro
yx NC1 18 20 ! pro
yy NC1 22 28 ! pro
文件 2
xx ds
xy jt
yy wp
所需的输出:
xx NC1 12 13 ! pro ds
xy NC1 15 17 ! pro jt
yx NC1 18 20 ! pro NA
yy NC1 22 28 ! pro wp
我正在使用的代码:
awk 'NR==FNR { a[$1]=$6; next }{print $0 " " ($2 in a ? a[$2] : "NA")}' file2 file1
所以基本上我的输出给了我一个新的列,都是“NA”,这显然不是我想要的。
输出:
xx NC1 12 13 ! pro NA
xy NC1 15 17 ! pro NA
yx NC1 18 20 ! pro NA
yy NC1 22 28 ! pro NA
解决方案
你很亲密。
awk 'NR==FNR {a[$1]=$2;next}{print $0, ($1 in a ? a[$1]:"NA")}' f2 f1
您的问题是,您将 thefile2
作为第一个参数,但是,您认为它是file1
. file2
根本没有$6
。
推荐阅读
- javascript - 在不同的页面上使用相同的 JavaScript,为什么会出现错误?
- linux - 未知的 syscall.SysProcAttr 字段“Unshareflags”
- angular - 如何在我打字时删除输入的特殊字符?(角度)
- service-worker - 既然 @babel/polyfill 已被弃用,如何使用 cra-append-sw 构建?
- spring-security - Spring Security 同名用户
- php - 在 PHP 中循环并从数据库中下载多个 CSV
- typescript - 在不保留目录结构的情况下编译 TypeScript
- android - 将自下而上的 microsoft Bitmap 转换为自上而下的 Android 格式
- python-3.x - 如何替换Dataframe中所有列中的值
- java - 如何编写查询以在弹性搜索中查找百分比?