【问题标题】:compare the value from file in awk在 awk 中比较文件中的值
【发布时间】:2014-04-09 20:33:04
【问题描述】:

我有两个名为 file1 和 file2 的文件,现在我想从 file1 中选择值并在整个 file2 上搜索它,如果找到记录,则对 file1 记录应用操作,否则对 file1 记录应用一些其他操作。

文件 1

a
s
d
f
g

文件 2

q
e
r
a
g

之前我使用如下

awk -F'|' '{if($1="abc" || $1="a") print ......}' file1 

现在我有多个值要比较,我已将这些值放入文件中 (abc,a.....) 但我不知道怎么用。

请帮忙

【问题讨论】:

  • 你的预期输出是什么?

标签: shell awk


【解决方案1】:

执行此操作的一种常见方法是将要搜索的值存储在哈希中,并将其用作查找表。这样的事情可能对你有用:

search.awk

FNR==NR { 
  seen[$0]
  next
}

$0 in seen { 
  print $0 " is in file2"
  next 
} 

{ 
  print $0 " is not in file2" 
}

像这样运行它:

awk -f search.awk file2 file1

输出:

a is in file2
s is not in file2
d is not in file2
f is not in file2
g is in file2

【讨论】:

    【解决方案2】:

    使用 awk

    awk 'NR==FNR{a[$1];next}{print $0,($1 in a)?"Yes":"No"}' file2 file1
    
    a Yes
    s No
    d No
    f No
    g Yes
    

    【讨论】:

      猜你喜欢
      • 2019-05-24
      • 2013-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-13
      • 2018-03-04
      • 2014-12-25
      • 2013-10-26
      相关资源
      最近更新 更多