【问题标题】:awk; searching file2 by file1哇;按文件 1 搜索文件 2
【发布时间】:2013-11-05 20:20:18
【问题描述】:

我搜索了高低,但没有找到 awk 的确切代码。

我有 2 个文件。 文件1(单列):

1407859648
1639172851
1427051689
1023011285
1437152683
1508869405
1790775963
1932373552

文件2(三栏):

1790775963,1932373552,65
1639206006,1437337425,15
1265418669,1477541563,145
1053424648,1316944317,182
1184611535,1821014457,26
1003906082,1134327133,152
1376530121,1841236684,168
1316921570,1962555771,23
1396962627,1184732489,87
1194958421,1255333456,113
1538156732,1336215482,62

文件 1 和 2 的记录数不相等。 当 File2 中的 Col1 和 Col2 都与 File1 中的 Col1 匹配时,我想打印文件 2 中的记录。 在此示例中,输出应为:

1790775963,1932373552,65

谢谢!

一个

【问题讨论】:

    标签: bash awk


    【解决方案1】:

    尝试以下操作:

    awk -F',' 'NR==FNR {arr[$1]++; next} (($1 in arr) && ($2 in arr)) {print $0}' file1 file2
    

    输出:

    1790775963,1932373552,65
    

    编辑

    或者更简洁如sudo_O建议的那样

    awk -F, 'NR==FNR{a[$0];next}($1 in a)&&($2 in a)' file1 file2
    

    【讨论】:

    • 惯用方式awk -F, 'NR==FNR{a[$0];next}($1 in a)&&($2 in a)'
    • @sudo_O 感谢您的建议。我已将其添加到我的解决方案中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 2012-01-22
    • 1970-01-01
    • 2018-09-02
    • 2018-01-24
    • 1970-01-01
    • 2013-12-09
    相关资源
    最近更新 更多