gpt4 book ai didi

linux - 比较两个文件并在匹配词后打印 N 行

转载 作者:太空狗 更新时间:2023-10-29 12:15:03 28 4
gpt4 key购买 nike

我需要根据 File2File1 中搜索名称。如果找到匹配的名字,我需要在它后面打印三行。

— 文件 1 —

Name1
Name2
Name3

— 文件 2 —

Topic1 ....description...
lineA
lineB
lineC
Name1 ....description...
lineA
lineB
lineC
Name3 ....description...
lineA
lineB
lineC
Topic2 ....description...
lineA
lineB
lineC
Topic3 ....description...
lineA
lineB
lineC

——预期结果——

Name1 ....description...
lineA
lineB
lineC
Name3 ....description...
lineA
lineB
lineC
  • 我尝试使用 awk 查找两个文件之间的匹配,但只成功打印了 Name1 ....description...(没有 lineA - C行)

    awk 'BEGIN { while ( getline < "File1" ) arr[$0]++ }( $1 in arr )' File2
  • 我知道 grep 命令可用于使用模式打印某些行

    grep -A3 /pattern/ file

我现在的问题是我不知道如何组合这两个命令。也许有人可以建议一个 Perl 脚本来运行这些流程?

最佳答案

您可以向 grep 传递一个包含模式的文件(-f 选项),所以

$ grep -F -f file1 -A3 file2
Name1 ....description...
lineA
lineB
lineC
Name3 ....description...
lineA
lineB
lineC

使用-F表示模式是固定字符串,不是正则表达式。

关于linux - 比较两个文件并在匹配词后打印 N 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28394755/

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