テキストファイルの値を確認してください。

テキストファイルの値を確認してください。

ファイルの2番目の列(ファイル2)の値が別のファイル(ファイル1)の2番目の列にあることを確認する簡単な方法はありますか?たとえば、関連行の横にアスタリスクを印刷する方法はありますか?可能であればawkを使用してください。

ファイル1

A   1,2,3,4 
B   15,16,17

ファイル2

A   3
B   18

期待される出力:ファイル3

A   1,2,3,4     *
B   15,16,17         

編集する ファイル2が次のような場合はどうですか?

A    3,8
B    18,19

しかし、予想される出力は同じままですか?

ベストアンサー1

この試み:

$ awk '
   FNR == NR {
       a[$1] = $2;next
   }
   {
       split(a[$1],b,",");
       for (i in b) {
           if ($2 == b[i]) {
               printf("%s %s\t*\n",$1,a[$1]);
               next;
           }
       }
       print $1,a[$1];
   }
' file1 file2 
A 1,2,3,4   *
B 15,16,17

修正する

新しい入力で次のことを試してください。

$ awk '
    FNR == NR {
        a[$1] = $2;
        next;
    }
    {
        split($2,b,",");
        split(a[$1],c,",");
        for (i in b) {
            if (b[i] in c) {
                printf("%s %s\t*\n",$1,a[$1]);next;
            }}
                print $1, a[$1];
     }
' file1 file2

おすすめ記事