linux - 将多个文件合并到一个文件中,包括 shell 中不匹配的行
问题描述
文件 1.log
207.46.13.90 37556
157.55.39.51 34268
40.77.167.109 21824
157.55.39.253 19683
文件2.log
207.46.13.90 62343
157.55.39.51 58451
157.55.39.200 37675
40.77.167.109 21824
文件 3.log
207.46.13.90 85343
157.55.39.51 59876
157.55.39.200 37675
157.55.39.253 19683
下面应该是预期的 history.log
207.46.13.90 37556 62343 85343
157.55.39.51 34268 58451 59876
157.55.39.200 ----- 37675 37675
40.77.167.109 21824 21824 -----
157.55.39.253 19683 ----- 19683
使用加入不起作用-我可以按照 Ravinder 在另一个线程中的建议获得 2 个文件:加入两个文件,包括 Shell 中不匹配的行
此外,在下一次运行中,我会将另一个 file4.log 添加到说 history.log 作为第 4 列。提前致谢。
解决方案
您可以使用它gnu awk
来组合具有与第一列值相同的键的多个文件:
awk -v OFS='\t' '{
a[$1][ARGIND] = $2
}
END {
for (i in a) {
printf "%s", i
for (j=1; j<ARGC; j++)
printf "%s", OFS (j in a[i] ? a[i][j] : "-----")
print ""
}
}' File*.log
207.46.13.90 37556 62343 85343
40.77.167.109 21824 21824 -----
157.55.39.51 34268 58451 59876
157.55.39.253 19683 ----- 19683
157.55.39.200 ----- 37675 37675
推荐阅读
- r - 如何计算 GJRM 函数/包估计的边际效应
- excel - 我的代码有问题。我想更改数据透视图的颜色
- dart - Http.get 返回 null
- android - LiveData 和 Coroutines - 属性必须被初始化或抽象
- c - arr 和 *arr 有什么区别?
- java - 在 Logstash 7.0 中定义常量
- html - 容器上的高度相等,但使用 Display Flex
- c# - How do i dynamically name Linklabels?
- c - 结构内的数组;如何让我的代码更简洁?
- javascript - 将 JSFiddle 与基于 React 的外部库一起使用