複数のファイルを1行ずつマージ

複数のファイルを1行ずつマージ

File3の指示に従って、単純なbashスクリプト(sed?awk?)を使用してFile1とFile2の行を新しいFile4にコピーできますか?

 File1: /*two or more columns, tab delimited*/
    AC    456324
    DC    689712
    GH    123677
    KL    236587

File2: /*two or more columns, tab delimited*/
    DC    AABBC TTYJU
    AC    DDDEE YYUKI
    KL    GGHHG QQSSD

 File3: /*one column*/
    AC
    DC

File4 /*tab delimited*/
    AC    456324    DDDEE   YYUKI
    DC    689712    AABBC   TTYJU

私は実際にPython辞書を使ってこれをやっていますが、簡単な解決策を知っていますか?

注:この質問にはすでに最も単純な形式の答えがあります。ファイルを1行ずつマージ

ベストアンサー1

これは、配列を使用して接続したより簡単なケースの拡張です。awk

$ awk 'BEGIN{OFS="\t"} NR==FNR {a[$1]=$1;next;} \
    $1 in a {k=$1;$1="";a[k]=a[k]$0} END{for (i in a) print a[i]}' File3 File1 File2
AC      456324  DDDEE   YYUKI
DC      689712  AABBC   TTYJU

とは異なり、joinキーフィールドのファイルを事前にソートする必要はありません。

おすすめ記事