【发布时间】:2016-11-07 18:13:30
【问题描述】:
我有一个如下格式的测试文件,它包含用户被数据库锁定时的 username_date。
$ cat lockedusers.txt
TEST1_21062016
TEST2_02122015
TEST3_01032016
TEST4_01042016
$
我正在编写一个 ksh 脚本,并且在我的脚本编写水平上面临这种困难的情况。我想做的是:
- 从文本文件中读取该行,
- 如果此行的日期值超过 50 天,
- 然后读取该行直到下划线字符之前,例如TEST1变成一个变量,
- 然后删除此行。
该变量将用于从数据库中删除用户。任何帮助将不胜感激。
【问题讨论】:
-
这不是一个代码编写服务,但这里有一些提示:1)使用 IFS 将您的输入行分隔为变量; 2) 使用
date -d '50 days ago' +%Y%m%d和算术比较来做出你的逻辑决定。从您用作输入的文件中删除一行可能会出现问题,因此,请将您想要保留的行保存到另一个文件中,然后在完成后替换原始文件。 -
欢迎来到 Stack Overflow。请尽快阅读About 页面。你试过什么?您面临哪些问题?日期的格式是什么(可能是 ddmmyyyy - 但最好使用 yyyymmdd,最好使用标点符号)。您如何计算 50 天的差异?您使用的是哪个 Unix 变体?你有可用的 GNU
date命令吗?你有 Perl 可用吗?能不能安装 Perl 模块,比如Date::Calc?