我有两个文件,每个文件包含时间戳和计数,如下所示
文件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
这不是更优雅的解决方案,但如果你想学习 shell 脚本,这应该可以完成工作:
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