キーとしての列に基づいて2つのファイルをマージする方法

dileeps.iitb

キーとしての列に基づいて2つのファイルをマージし、a.txtの$ 1列に一致させ、$ 3列に基づいてb.txtを追加する方法

a.txt
aa; 2.5; 0.001;
ab; 1.5; 0.003;
ac; 0.4; 0.002;

b.txt

20-Nov-2014; 1775.00; aa;
20-Nov-2014; 1775.00; aa;
20-Nov-2014; 1463.40; ab;
20-Nov-2014; 1463.40; ac;
20-Nov-2014; 1463.40; ab;

Desired output look like this 
20-Nov-2014; 1775.00; aa; aa; 2.5; 0.001;
20-Nov-2014; 1775.00; aa; aa; 2.5; 0.001;
20-Nov-2014; 1463.40; ab; ab; 1.5; 0.003;
20-Nov-2014; 1463.40; ac; ac; 0.4; 0.002;
20-Nov-2014; 1463.40; ab; ab; 1.5; 0.003;

Thanks
John1024
$ awk -F';' 'FNR==NR{a[$1]=$0;next;} {print $0" " a[substr($3,2)];}' a.txt b.txt
20-Nov-2014; 1775.00; aa; aa; 2.5; 0.001;
20-Nov-2014; 1775.00; aa; aa; 2.5; 0.001;
20-Nov-2014; 1463.40; ab; ab; 1.5; 0.003;
20-Nov-2014; 1463.40; ac; ac; 0.4; 0.002;
20-Nov-2014; 1463.40; ab; ab; 1.5; 0.003;

使い方

awkファイルのすべての行を暗黙的にループします。各行はフィールドに分割されています。

  • -F';'

    これはawk、フィールド区切り文字としてセミコロンを使用するように指示します。

  • FNR==NR{a[$1]=$0;next;}

    NRはこれまでに読み込まれた行数であり、FNRは現在のファイルからこれまでに読み込まれた行数です。したがって、の場合FNR==NR、まだ最初のファイルを読み取っていますa.txtその場合、このセットは、読み込まれたばかりの行全体を、キー、3番目のフィールドの下の$0配列に割り当てます。a$1

    next告げるawk以下のコマンドの残りの部分をスキップして次の行にジャンプして最初からやり直します。

  • print $0" " a[substr($3,2)]

    ここに到達した場合、それは2番目のファイルで作業していることを意味しますb.txtその場合、このファイルの各行に続いてa、3番目のフィールドに一致するキーを持つ配列からの行を出力します。

    ファイルb.txtでは、3番目のフィールドはスペースで始まります。配列aこのフィールドを検索すると、そのスペースはsubstr関数で削除されます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

キーと二次キーに基づいて2つのcsvファイルをマージします

分類Dev

AWK:キーと最新の日付に基づいて2つのファイルをマージします

分類Dev

jqを使用して共通のキーと値のペアに基づいて2つのJSONファイルをマージする

分類Dev

1つの列に基づいて2つのファイルをマージするAwk

分類Dev

1つの列に基づいて2つのファイルをマージする

分類Dev

共通の列に基づいてファイルをマージする方法は?

分類Dev

Rの同じ列に基づいて2つのファイルをマージ/一致させる方法

分類Dev

AWKを使用して、複数の条件に基づいて2つのファイルをマージする

分類Dev

2つの列の一致に基づいて2つのファイルをマージしないawk

分類Dev

共通の列値に基づいて2つのファイルをマージします

分類Dev

パンダ:複数の列に基づいて2つのファイルをマージする

分類Dev

共通の列に基づいて2つのファイルをマージする

分類Dev

共通の列に基づいて 2 つの csv ファイルをマージする

分類Dev

2つの共通の列に基づいてRの複数のtsvファイルをマージしようとしています

分類Dev

Linuxで2つのキーに基づいて長さが等しくない2つのファイルをマージする

分類Dev

キー列に基づいて2つのデータフレームをマージする最良の方法

分類Dev

最初のファイルの最初の列のすべての値に基づいて 2 つのファイルをマージします

分類Dev

awkコマンドを使用して最初に一致する列に基づいて2つのファイルをマージする

分類Dev

Excelファイルをループし、Pythonの1つの共通列に基づいてマージします

分類Dev

Excelファイルをループし、Pythonの1つの共通列に基づいてマージします

分類Dev

キーと値のペアに基づいてファイルをマージし、Javaを使用してファイルを並べ替える方法は?

分類Dev

列名と文字列の類似性に基づいて2つのtxtファイルをマージするにはどうすればよいですか?

分類Dev

共通のキーに基づいてawkで3つのファイルをマージする

分類Dev

2つのjsonファイルをマージし、一致するキー値に基づいて属性値を取得します

分類Dev

最初の列に基づいてファイルをマージします

分類Dev

ファイルをマージし、idフィールドに基づいて列の値を取得する

分類Dev

Pythonのヘッダー値に基づいて2つのcsvファイルをマージする

分類Dev

マージルールに基づいて、2つの列挙子を1つにマージする方法

分類Dev

ファイル名の最初の2つの単語に基づいてPDFをマージします

Related 関連記事

  1. 1

    キーと二次キーに基づいて2つのcsvファイルをマージします

  2. 2

    AWK:キーと最新の日付に基づいて2つのファイルをマージします

  3. 3

    jqを使用して共通のキーと値のペアに基づいて2つのJSONファイルをマージする

  4. 4

    1つの列に基づいて2つのファイルをマージするAwk

  5. 5

    1つの列に基づいて2つのファイルをマージする

  6. 6

    共通の列に基づいてファイルをマージする方法は?

  7. 7

    Rの同じ列に基づいて2つのファイルをマージ/一致させる方法

  8. 8

    AWKを使用して、複数の条件に基づいて2つのファイルをマージする

  9. 9

    2つの列の一致に基づいて2つのファイルをマージしないawk

  10. 10

    共通の列値に基づいて2つのファイルをマージします

  11. 11

    パンダ:複数の列に基づいて2つのファイルをマージする

  12. 12

    共通の列に基づいて2つのファイルをマージする

  13. 13

    共通の列に基づいて 2 つの csv ファイルをマージする

  14. 14

    2つの共通の列に基づいてRの複数のtsvファイルをマージしようとしています

  15. 15

    Linuxで2つのキーに基づいて長さが等しくない2つのファイルをマージする

  16. 16

    キー列に基づいて2つのデータフレームをマージする最良の方法

  17. 17

    最初のファイルの最初の列のすべての値に基づいて 2 つのファイルをマージします

  18. 18

    awkコマンドを使用して最初に一致する列に基づいて2つのファイルをマージする

  19. 19

    Excelファイルをループし、Pythonの1つの共通列に基づいてマージします

  20. 20

    Excelファイルをループし、Pythonの1つの共通列に基づいてマージします

  21. 21

    キーと値のペアに基づいてファイルをマージし、Javaを使用してファイルを並べ替える方法は?

  22. 22

    列名と文字列の類似性に基づいて2つのtxtファイルをマージするにはどうすればよいですか?

  23. 23

    共通のキーに基づいてawkで3つのファイルをマージする

  24. 24

    2つのjsonファイルをマージし、一致するキー値に基づいて属性値を取得します

  25. 25

    最初の列に基づいてファイルをマージします

  26. 26

    ファイルをマージし、idフィールドに基づいて列の値を取得する

  27. 27

    Pythonのヘッダー値に基づいて2つのcsvファイルをマージする

  28. 28

    マージルールに基づいて、2つの列挙子を1つにマージする方法

  29. 29

    ファイル名の最初の2つの単語に基づいてPDFをマージします

ホットタグ

アーカイブ