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

时间:2017-03-29 10:24:41

标签: regex awk grep

我有两个文件(见下文),并希望从文件2(2列)中查看文件1中的模式。我认为这很容易,但我找不到任何线索如何将匹配项打到同一行

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 > output

2 个答案:

答案 0 :(得分:0)

使用awk是,而不是as_is with 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

答案 1 :(得分:0)

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