加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 00:51:21 所属栏目:Linux 来源:网络整理
导读:我需要从第二个文件中的一个文件中搜索字段.想知道awk是否是正确的解决方案 档案1 onetwo 档案2 something onebalh oneblah twoblah two 要求的输出 one ["something one","blah one"]two [ "blah two","blah two"] 我希望我可以在awk中使用awk,在第二行中搜
我需要从第二个文件中的一个文件中搜索字段.想知道awk是否是正确的解决方案

档案1

one
two

档案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}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读