我有一个输入文件。
30.01.2025 47288.39 47288.39
30.01.2025 -1.00 47287.39
31.01.2025 50.00 47337.39
31.01.2025 -1600.00 45737.39
31.01.2025 1880.00 47617.39
31.01.2025 18.21 47635.60
31.01.2025 -3.46 47632.14
03.02.2025 -51.00 47581.14
03.02.2025 -10.00 47571.14
04.02.2025 -1600.00 45971.14
04.02.2025 1609.00 47580.14
05.02.2025 -800.00 46780.14
05.02.2025 -320.00 46460.14
05.02.2025 51.00 46511.14
05.02.2025 800.00 47311.14
05.02.2025 11.00 47322.14
我想要获取一个输出文件。
30.01.2025 47288.39 47288.39
30.01.2025 -1.00 47287.39 47287.39
31.01.2025 50.00 47337.39
31.01.2025 -1600.00 45737.39
31.01.2025 1880.00 47617.39
31.01.2025 18.21 47635.60
31.01.2025 -3.46 47632.14 47632.14
03.02.2025 -51.00 47581.14
03.02.2025 -10.00 47571.14 47571.14
04.02.2025 -1600.00 45971.14
04.02.2025 1609.00 47580.14 47580.14
05.02.2025 -800.00 46780.14
05.02.2025 -320.00 46460.14
05.02.2025 51.00 46511.14
05.02.2025 800.00 47311.14
05.02.2025 11.00 47322.14 47322.14
我试过。
awk '{if(!seen[$1]++){print $0}}' File_1
好像您想复制给定日期的最后一条条目的最后一个字段?
在下一次迭代打印之前,您需要缓冲一行,最好将其缓冲到数组中:
输出:
当当前记录是当天的最后一条记录时,您想要复制 $3 。
我发现反转线条更容易,对第一个“无论什么”做一些事情,然后重新反转线条:
通常我会写,
$4 = $3
但这会破坏更新行的间距。方法:
printf
当前行;不要用\n
$NF
+结束上一行\n
\n
$NF
最后一行以+的副本结尾\n
一个
awk
想法:这将生成: