2つのデータセットをマージしようとしています。
file1は、うるう年と非うるう年を一緒に記述するために使用される最大366の数値ユリウス暦日付テキストファイルです。
1
2
3
4
5
6
7
8
9
10
ファイル2は、年中欠けているさまざまな日を含むデータセットです。
1 0.055980045
4 0.026198495
6 0.063033253
8 0.079462815
以下のようなファイルを作成しようとしています。 3
1 0.055980045
2
3
4 0.026198495
5
6 0.063033253
7
8 0.079462815
9
10
多くのコマンドを試しましたが、これを実行できませんでしたsort
。grep
どんな提案でも
答え1
awk
この目的に使用できます。
awk 'NR==FNR {missing[$1]=$2} NR>FNR {printf("%s %s\n",$1,missing[$1]);}' file2.txt file1.txt > file3.txt
file2.txt
この内容が最初に処理され、処理されますfile1.txt
。
処理中(各ファイルの行番号
file2.txt
はグローバル処理の行番号と同じです)、「年間欠損日」の関連付けを配列に読み込みます。FNR
NR
missing
処理中に、
file1.txt
配列で見つかった年と欠落した日付missing
(または存在しない場合は空の文字列)を印刷します。
出力はファイルにパイプされますfile3.txt
。
答え2
awk
2番目のファイルからデータを収集し、最初のファイルの値をハッシュするために使用できるようです。
awk 'FNR == NR { map[$1] = $2; next } ($1 in map) { $2 = map[$1] }1' file2 file1