我是 Linux 命令新手。我目前正在 test.sh 中编写逻辑,仅保留过去 14 天的 Example.log。
示例.log
[2024-03-25 05:36:42]: ERROR No such file or directory
[2024-03-24 05:36:42]: ERROR No such file or directory
[2024-03-23 05:36:42]: ERROR No such file or directory
[2024-03-21 05:36:42]: ERROR No such file or directory
[2024-03-20 05:36:42]: ERROR No such file or directory
[2024-03-19 05:36:42]: ERROR No such file or directory
[2024-03-18 05:36:42]: ERROR No such file or directory
[2024-03-17 05:36:42]: ERROR No such file or directory
[2024-03-16 05:36:42]: ERROR No such file or directory
[2024-03-15 05:36:42]: ERROR No such file or directory
[2024-03-14 05:36:42]: ERROR No such file or directory
[2024-03-13 05:36:42]: ERROR No such file or directory
[2024-03-12 05:36:42]: ERROR No such file or directory
[2024-03-11 05:36:42]: ERROR No such file or directory
我的第一个想法是使用
awk
和 if 来获取每一行,然后使用 cut
来获取前 10 个字符并与当天进行比较。如果 14 天内没有,则将其删除。但我不知道如何将这个逻辑转换为Linux命令。
非常感谢您的帮助。
谢谢!
$ awk -F'^.|-| ' -v date=$(date +%Y%m%d) '$2$3$4 >= date-14' logfile
[2024-03-25 05:36:42]: ERROR No such file or directory
[2024-03-24 05:36:42]: ERROR No such file or directory
[2024-03-23 05:36:42]: ERROR No such file or directory
[2024-03-21 05:36:42]: ERROR No such file or directory
[2024-03-20 05:36:42]: ERROR No such file or directory
[2024-03-19 05:36:42]: ERROR No such file or directory
[2024-03-18 05:36:42]: ERROR No such file or directory
[2024-03-17 05:36:42]: ERROR No such file or directory
[2024-03-16 05:36:42]: ERROR No such file or directory
[2024-03-15 05:36:42]: ERROR No such file or directory