awkを使用して複数のファイルをマージする方法

awkを使用して複数のファイルをマージする方法

ファイルが2つあります。

ファイル1:

Fruits
Mango
Orange
Banana

ファイル2:

Cost
100
80
40

予想出力:

Fruits    Cost
Mango  100
Orange  80
Banana  40

どうすればいいですかawk

答え1

paste代わりにこれを使用してくださいawk。例えば

$ paste file1 file2
Fruits  Cost
Mango   100
Orange  80
Banana  40

デフォルトの出力列区切り記号pasteはタブです。この-dオプションを使用して、カンマ、コロン、セミコロン、または必要なものを使用できます。

答え2

awkを使用するには:

awk '{print $0, ((getline x < "-") == 1 ? x : "")}' file1 < file2

テストの戻り値getline(成功時1戻り)に基づいて値を印刷します。

答え3

この Perlユーティリティを使用すると、次のように2つのファイルを並べて貼り付けることができます。

perl -pe '
  ($_ .= <STDIN>) =~ s/\n/ /;
' file1 < file2

GNU sedストリームエディタのバージョンでは、これら2つのファイルを次のように貼り付けることができます。

sed -e 'R file2' file1| sed -e 'N;s/\n/ /'

ユーティリティを使用して、pythonマッピング機能を介して2つのファイルを貼り付けます。

python3 -c 'import sys
file1,file2 = sys.argv[1:]
with open(file1) as f1, open(file2) as f2:
  print(*list(map(lambda x,y: f"{x.rstrip()} {y}",f1,f2)),sep="",end="")
' file1 file2

関連情報