小编Mic*_*gle的帖子

如果列匹配另一个文件,打印每一行匹配(awk/grep)

我正在获取两个输入文件,一个带有特定的 ID 号,另一个带有大量 ID 号和附加列。后一个文件包含每个 ID 号的多行,我需要从第一个文件中提取与 ID 匹配的所有行。这些行然后必须打印在一个新文件中。

编辑 1:用实际的摘录替换了示例文件

编辑 2:删除了摘录中的额外空格,但不是实际文件。文件可能需要以某种方式清理,但不清楚如何清理。

文件 1:

AT1G56430
AT3G55190
AT3G22880
Run Code Online (Sandbox Code Playgroud)

文件2:

AT1G01010|GO:0043090|RCA
AT1G56430|GO:0010233|IGI 
AT1G56430|GO:0009555|IGI 
AT1G56430|GO:0030418|IGI
Run Code Online (Sandbox Code Playgroud)

预期产出

AT1G56430|GO:0010233|IGI 
AT1G56430|GO:0009555|IGI 
AT1G56430|GO:0030418|IGI
Run Code Online (Sandbox Code Playgroud)

[文件1ss[文件 2ss

我试过了:

awk -F'|' 'NR==FNR{c[$1$2]++;next};c[$1$2] > 0' file1 file2 > output.txt
Run Code Online (Sandbox Code Playgroud)

和:

grep -Ff file2 file1 > output.txt
Run Code Online (Sandbox Code Playgroud)

我知道在这些论坛和其他论坛上发布了许多类似的问题。然而,这些没有提到如何处理输出……也没有提到重复。我已经尝试了其中 4 个的解决方案,已经为此搞砸了好几个小时,并不断遇到同样的问题:一个空白的输出文件。

我是 awk 的新手,非常感谢您的帮助。抱歉,如果这是语法等方面的简单问题;请让我知道。谢谢您的帮助。

grep awk

6
推荐指数
1
解决办法
2万
查看次数

标签 统计

awk ×1

grep ×1