以下に示すように、それぞれタイムスタンプと数を含む2つのファイルがあります。
ファイル1.txt
9 2016-06-22
3 2016-06-23
2 2016-06-24
1 2016-06-25
2 2016-06-26
2 2016-06-27
ファイル2.txt
3 2016-06-23
2 2016-06-25
5 2016-06-27
両方のファイルの日付列(col-3)を使用して出力を生成し、次のようにリンクされた出力を生成したいと思います。
予想される結果:
9 2016-06-22
3 3 2016-06-23
2 2016-06-24
1 2 2016-06-25
2 2016-06-26
2 5 2016-06-27
貼り付けコマンドの使用は非常に複雑で、予想される出力を取得するには手動操作が必要です。誰でも私を助けることができますか?
ありがとうございます。
答え1
最善の解決策は、join
次のコマンドを使用することです。
join -j 2 -a 1 -e " " -o 1.1 2.1 1.2 File1.txt File2.txt
これはよりエレガントな解決策ではありませんが、シェルスクリプトを学びたい場合は、次のように作業を完了する必要があります。
while read line1; do
file1_number=$(echo ${line1} | cut -d ' ' -f 1)
file1_date=$(echo ${line1} | cut -d ' ' -f 2)
line2=$(grep ${file1_date} File2.txt)
file2_number=$(echo ${line2} | cut -d ' ' -f 1)
if [[ -z "${file2_number}" ]]; then
file2_number=" "
fi
echo ${file1_number} "${file2_number}" ${file1_date}
done < File1.txt