【问题标题】:Compare line by line two files with multiple columns using bash using comperatives使用 bash 使用 Comperatives 逐行比较具有多列的两个文件
【发布时间】:2020-09-23 22:21:25
【问题描述】:

我有两个文件:

文件1:

a b 30 d
a b 50 d

和文件2:

a b 20 d
a b 60 d

首选输出文件file_output:

a b 20 d
a b 50 d

我想逐行比较每个文件,我想在输出文件中打印,使用 awk 在其中第 3 列中的数字较小的行。

我尝试了类似的方法:

awk '  NR==FNR { arr[$3];next} arr[$3] < $3 ' file1 file2 > file_output

但它只为 file1 打印较小的,而不为 file2 打印

【问题讨论】:

  • 欢迎来到 Stack Overflow。请按照建议添加您的搜索/研究工作的简要说明。

标签: if-statement awk compare multiple-columns


【解决方案1】:
awk 'FNR==NR {f3[FNR]=$3;a[FNR]=$0;next} FNR in a {print ($3<f3[FNR])?$0:a[FNR]}' file1 file2

【讨论】:

  • 如果有一天你有时间。如果您逐步解释您的答案,我将不胜感激。
  • 好的,感谢“分享”。您认为什么是“十进制”数字?你能提供一个“不工作”的样本吗?
猜你喜欢
  • 2018-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-27
  • 2011-05-09
  • 2015-12-02
相关资源
最近更新 更多