【问题标题】:To print unmatched values when compared from files using awk/diff/sed/grep使用 awk/diff/sed/grep 从文件比较时打印不匹配的值
【发布时间】:2021-09-24 15:55:56
【问题描述】:

我试图从两个文件中打印一些不匹配的字符串,其中在我的第一个文件中有一些整数值用空格分隔的字符串,我的第二个文件也有一些字符串值与来自的一些字符串值匹配第一个文件,但它前面没有指定任何整数。

使用下面的awkdiff 命令我试图获取我的第一个文件与第二个文件相比不匹配的数据。

当使用awk 时,它将产生第一个文件的内容,基本上它会打印传递给awk 命令的最后一个参数的内容。

awk -F, 'FNR==NR {a[$1];next} !($0 in a)' f2 f1

当使用diff 时,它会产生第二个文件的内容,这里它会打印传递的第一个参数的内容。

diff --changed-group-format='%<' --unchanged-group-format='' f2 f1

f1

papaya   10
apple    23
Moosumbi 44
mango    32
jackfruit 15
kiwi  60
orange 11
strawberry 67
banana 99
grapes 21
dates 6

f2

apple
mango
kiwi
strawberry

预期结果

papaya   10
Moosumbi 44
jackfruit 15
orange 11
banana 99
grapes 21
dates 6

【问题讨论】:

  • grep -F -vf f2 f1 能解决您的问题吗?祝你好运。
  • @shellter 是的 :) 非常感谢

标签: awk sed grep diff file-comparison


【解决方案1】:

这是在 awk 中很常见的事情:将 f2 中的值读取到一个数组中,然后在处理 f1 时,只打印 f2 数组中第一个字段不存在的行:

awk 'NR == FNR {f2[$1]; next} !($1 in f2)' f2 f1

我还打算从 @shellter 建议 grep 命令,但他打败了我(你应该添加 -w 选项,以匹配整个单词)。

【讨论】:

    猜你喜欢
    • 2021-09-23
    • 2017-08-26
    • 2021-12-31
    • 2021-06-15
    • 2016-07-30
    • 2020-04-16
    • 2019-11-11
    • 1970-01-01
    • 2012-10-18
    相关资源
    最近更新 更多