我有一個測試文件,格式如下,它包含用戶從數據庫鎖定時的username_date。使用ksh解析一行中的名稱和日期,並在日期早於50天時刪除該行
$ cat lockedusers.txt
TEST1_21062016
TEST2_02122015
TEST3_01032016
TEST4_01042016
$
我正在寫一個ksh腳本,面對我的腳本級別的這個難題。我想這樣做的是:
- 閱讀從文本文件中的行,
- 如果該行的日期值超過50天以上,
- 然後讀取一行直至下劃線之前,例如TEST1變成一個變量,
- 然後刪除這一行。
該變量將用於從數據庫中刪除用戶。任何幫助,將不勝感激。
這不是一個代碼編寫的服務,但這裏的一對夫婦的提示:1)使用IFS您輸入線分成變量; 2)使用'date -d '50天前'+%Y%m%d'和一個算術比較來做出邏輯決定。從您用作輸入的文件中刪除一行可能會產生問題,因此請將您希望保留的行保存到另一個文件,然後在完成後可能會替換原始文件。 – twalberg
歡迎使用堆棧溢出。請儘快閱讀[關於]頁面。你有什麼嘗試?你面臨的問題是什麼?日期的格式是什麼(可能是ddmmyyyy - 但最好使用yyyymmdd,最好是標點符號)。你如何計算50天的差異?你使用哪種Unix變體?你有GNU'date'命令嗎?你有Perl嗎?你可以安裝Perl模塊,比如[Date :: Calc](http://search.cpan.org/perldoc?Date%3A%3ACalc)嗎? –
請注意,[twalberg]的[評論](http://stackoverflow.com/questions/38211373/ksh-parse-line-before-underscroe-character -into-a-variable-then-remove-this-line#comment63847531_38211373)假定存在GNU'date' - 並說明它爲什麼有用。做沒有GNU'date'的計算是相當困難的。 –