awk 搜索另一个文件中的字段

2023-12-21

我需要在第二个文件中搜索一个文件中的字段。想知道 awk 是否是正确的解决方案

file 1

one
two

file 2

something one
balh   one
blah two
blah two

所需输出

one ["something one", "blah one"]
two [ "blah two" , "blah two"]

我希望我可以在 awk 中使用 awk ,在第二秒内搜索每一行并构建输出。


一次调用 awk 就足够了

awk '
    FNR == NR {
      # reading file1
      values[$1] = ""
      next
    }
    {
      # reading file2
      for (elem in values)
        if ($0 ~ elem)
          if (values[elem] == "")
            values[elem] = "\"" $0 "\""
          else
            values[elem] = values[elem] ", \"" $0 "\""
    }
    END {
      for (elem in values)
        print elem " [" values[elem] "]"
    }
' file1 file2

在 Ruby 之类的东西中可能更容易

keys = File.readlines("file1").collect {|line| line.chomp}
values = Hash.new {|h,k| h[k] = []}
File.foreach("file2") do |line|
  line.chomp!
  keys.each do |key|
    if line.include?(key)
       values[key] << line
    end
  end
end
values.each {|key,value| puts key + " " + value.inspect}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

awk 搜索另一个文件中的字段 的相关文章

随机推荐