根据评论,以下是简化要求。需要更新以下输入日志文件,每天执行后获得实际数字,这将添加为预期旁边的第4列,run_id将添加为日期后的第2列。对日期执行grep将显示以下行,我正在尝试使用"|"(管道)分隔符。
总结一下:每当执行时,需要更新日志文件(每次执行更新一次)
日志文件内容
| 日期|预期|
| - ------|- ------|
| 二○二二年十一月一日|一百|
| 二○二二年十一月二日|二百|
运行脚本变量数据
|运行日期:2022年11月1日||运行ID:2211||实际计数:102|
如果我将其放置在文件中以使用Linuxjoin实用程序,则文件内容如下所示,或者我可以使用由所有3个值分隔的变量管道
- 2001年11月22日|小行星2211|102人**
1次执行后更新的日志文件内容将
| 日期|运行标识|预期|实际的|
| - ------|- ------|- ------|- ------|
| 二○二二年十一月一日|小行星2211|一百|一百零二|
| 二○二二年十一月二日|二百|||
尝试通过将变量值保存在单独的文件中并进行联接以获得4列输出来使用联接,但对于一次一个值来说,这似乎不是最佳解决方案。我不想为使用联接而累积此运行信息,而是希望在运行时使用。join -a 2 -1 1 -2 1 -t\| -o 2.1,2.2,1.2,1.3 <(sort actual.txt) <(sort expected.txt)
2条答案
按热度按时间iq3niunx1#
我能够使用awk得到想要的结果:
33qvvth12#
作为Nic 3500,* 你的问题几乎是胡言乱语 。
此外,除非您非常喜欢数据库编程,(并且您的头脑清楚地了解这种方法/心态,否则我个人建议避免使用“连接”。
我做了一些假设,并使用awk创建了一个脚本( 这实际上是为这类工作设想的 *),以解决这些假设。
如果删除所有带有“dbg == 1”的行,那么最终得到的是一个相当精简和简单的脚本。
剧本:
会话日志如果运行时没有删除硬编码调试标志:
如果使用“dbg=0"修改脚本,则简单输出如下:
...与指定的完全相同,带有竖线。要消除竖线,请设置“tabdiv=""“,然后您会得到