【问题标题】:Loop through contents of txt file to find match in 2nd txt file (Mac OS or Linux)循环遍历 txt 文件的内容以在第二个 txt 文件中查找匹配项(Mac OS 或 Linux)
【发布时间】:2023-04-06 20:00:01
【问题描述】:

搜索了该网站,但找不到我需要的东西。我有两个 .txt 文件,每个文件的每一行都有一个值,由换行符分隔。

1st TXT File 2nd TXT File
value1 value3
value2 value4
value3 value5
... value6
... value7
... value8

在 Mac OS 或 Linux 中,如何循环遍历第一个 .txt 文件的每一行并在第二个 .txt 文件中找到对应的值?理想情况下,我想输出一个仅显示找到的值的 final.txt。

感谢任何帮助!提前谢谢!

【问题讨论】:

    标签: linux macos parsing text-parsing txt


    【解决方案1】:
    grep -o -f 1sttxtfile 2ndtxtfile >  final.txt
    

    使用 -f 标志将第一个文件的内容用作搜索词以在第二个文件中查找。使用 -o 仅打印匹配项

    【讨论】:

    • 这里不需要-o-o 告诉 grep 对于每个匹配行仅显示匹配搜索模式的部分,而不是整行。但是在这种情况下,匹配的“部分”是整行,所以-o没有效果。
    【解决方案2】:

    您可以这样做,其中 a.txt 是左侧文件,b.txt 是右侧文件。在终端中运行它,在文件所在的同一文件夹中:

    for token in `cat a.txt`                                                      
    do 
        grep $token b.txt
    done
    

    如果你想输出到一个文件中,那么你可以添加 tee 例如:

    for token in `cat a.txt`
    do 
        grep $token b.txt | tee -a final.txt
    done
    

    【讨论】:

    • 有效,但由于其单行答案而选择了其他答案。每个人都喜欢一个好的单线。 :)
    • 一行:for token in `cat a.txt`; do; grep $token b.txt; done
    • 谢谢@stalet! :) 多读一点,似乎共识是 grep 是一个更快的过程,但谢谢!
    猜你喜欢
    • 2021-12-09
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多