Regex 从文件(列表)到同一行的Grep模式

Regex 从文件(列表)到同一行的Grep模式,regex,awk,grep,Regex,Awk,Grep,我有两个文件(见下文),希望从文件2(2列)中grep文件1中的模式。我认为这真的很容易,但我找不到任何线索,如何grep比赛到同一行 File1 ABC DEF GHI File 2 ABC SeqX ABC SeqY ABC SeqP DEF SeqW DEF SeqO GHI SeqR GHI Seql 输出应如下所示: ABC SeqX SeqY SeqP DEF SeqW SeqO GHI SeqR Seql 我知道它必须是这样的:grep-f file

我有两个文件(见下文),希望从文件2(2列)中grep文件1中的模式。我认为这真的很容易,但我找不到任何线索,如何grep比赛到同一行

File1
ABC
DEF
GHI

File 2
ABC SeqX
ABC SeqY
ABC SeqP
DEF SeqW
DEF SeqO
GHI SeqR
GHI Seql
输出应如下所示:

    ABC SeqX SeqY SeqP
    DEF SeqW SeqO
    GHI SeqR Seql

我知道它必须是这样的:
grep-f file 1 file2>输出

带有awk yes,而不是grep

awk 'FNR==NR { Ls[$1];next}
     ( $1 in Ls) { Ds[ $1] = Ds[ $1] " " $2 }
     END { for( L in Ls ) print L Ds[ L] }
     ' File1 File2

awk
解决方案:

awk 'FNR==NR{a[$1]=a[$1]" "$2; next}{if($1 in a) print $1a[$i]}' file2 file1
输出:

ABC SeqX SeqY SeqP
DEF SeqW SeqO
GHI SeqR Seql

很抱歉,小的打字错误,
LS
在结尾部分实际上是
LS
太棒了!非常感谢你,尼隆·维鲁!你的困难不在于格雷普,而是把三行代码变成一行代码。您需要awk或perl来实现这一点。file1有什么意义?您可以仅从读取文件2生成发布的输出。如果你的问题是有目的的,那么你的问题就是有目的的,你发布的例子就说明了这个目的——现在看来,你所能找到的答案就是你没有的问题的解决方案。