gpt4 book ai didi

csv - 从 CSV 中提取匹配的行

转载 作者:行者123 更新时间:2023-12-03 08:28:36 24 4
gpt4 key购买 nike

我有一个看起来像这样的文件:

64fe12c7-b50c-4f63-b292-99f4ed74e5aa, ip, 1.2.3.4, 
64fe12c7-b50c-4f63-b292-99f4ed74e5aa, ip, 4.5.6.7,
bacd8a9d-807f-4ae9-95d2-f7cc17222cab, ip, 0.0.0.0/0, silly string
bacd8a9d-807f-4ae9-95d2-f7cc17222cab, ip, 0.0.0.0/0, crazy town
db86d211-0b09-4a8f-b222-a21a54ad2f9c, ip, 8.9.0.1, wild wood
db86d211-0b09-4a8f-b222-a21a54ad2f9c, ip, 0.0.0.0/0, wacky tabacky
611f8cf5-f6f2-4f3a-ad24-12245652a7bd, ip, 0.0.0.0/0, cuckoo cachoo

我想提取唯一的 GUID 列表,其中
  • GUID 在第 3 列中没有 0.0.0.0/0
  • 第 3 列匹配 0.0.0.0/0 并且有多个 GUID 实例,并且其中至少一个匹配项不是 0.0.0.0/0

  • 在这种情况下,所需的输出将是:
    64fe12c7-b50c-4f63-b292-99f4ed74e5aa
    db86d211-0b09-4a8f-b222-a21a54ad2f9c

    试图通过这个思考,我觉得我应该制作一个唯一 GUID 的数组/列表,然后有点 grep 匹配的行并运行上述两个条件的过程,但我只是不知道最好的方法用一个简短的脚本或者 grep/awk/sort/cut a liner 来说明这一点。感谢任何帮助!

    (原始文件是 4 列 csv,其中第 4 列通常为空)

    最佳答案

    使用 awk :

    awk -F, '$3 !~/0\.0\.0\.0\/0/ && !seen[$1]++{print $1}' infile

    说明:
  • $3 !~/0\.0\.0\.0\/0/ field3 不匹配正则表达式和( && )
  • !seen[$1]++ field1 以前没见过(每当 awk 看到重复的键( $1 ),数组值就会加 1,我们使用逻辑否定只打印一次值)
  • ! 是逻辑否定运算符
  • seen 是数组
  • $1 是数组键
  • ++ 增量运算符(当前上下文后增量)
  • print $1 打印字段1

  • 测试结果:
    $ cat infile
    64fe12c7-b50c-4f63-b292-99f4ed74e5aa, ip, 1.2.3.4,
    64fe12c7-b50c-4f63-b292-99f4ed74e5aa, ip, 4.5.6.7,
    bacd8a9d-807f-4ae9-95d2-f7cc17222cab, ip, 0.0.0.0/0, silly string
    bacd8a9d-807f-4ae9-95d2-f7cc17222cab, ip, 0.0.0.0/0, crazy town
    db86d211-0b09-4a8f-b222-a21a54ad2f9c, ip, 8.9.0.1, wild wood
    db86d211-0b09-4a8f-b222-a21a54ad2f9c, ip, 0.0.0.0/0, wacky tabacky
    611f8cf5-f6f2-4f3a-ad24-12245652a7bd, ip, 0.0.0.0/0, cuckoo cachoo

    $ awk -F, '$3 !~/0\.0\.0\.0\/0/ && !seen[$1]++{print $1}' infile
    64fe12c7-b50c-4f63-b292-99f4ed74e5aa
    db86d211-0b09-4a8f-b222-a21a54ad2f9c

    关于csv - 从 CSV 中提取匹配的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48357247/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com