我想用下面的格式與當前日期比較shell腳本中的文件中的日期並返回一些標誌。格式的日期比較
Sep 15 2017 11:04AM
Sep 16 2017 10:07AM
Sep 19 2017 11:44AM
Sep 20 2017 10:08AM
Sep 21 2017 10:03AM
awk腳本可以在這裏使用。
我想用下面的格式與當前日期比較shell腳本中的文件中的日期並返回一些標誌。格式的日期比較
Sep 15 2017 11:04AM
Sep 16 2017 10:07AM
Sep 19 2017 11:44AM
Sep 20 2017 10:08AM
Sep 21 2017 10:03AM
awk腳本可以在這裏使用。
假設包含日期的文件看起來像這樣:
$ cat file1
Sep 15 2017 11:04AM
Sep 16 2017 10:07AM
Sep 19 2017 11:44AM
Sep 20 2017 10:08AM
Sep 21 2017 10:03AM
Oct 02 2017 10:03AM
Oct 05 2017 10:03AM
Oct 07 2017 10:03AM
使用此爲GNU日期
cat file1 | xargs [email protected] bash -c " \
seven_days_ago=$(date --date='7 days ago' +%s); \
input=\$(date --date=\"@\" +%s); \
if [ \"\$seven_days_ago\" -gt \"\$input\" ]; then \
echo \"@\"; \
fi;"
這對於BSD日期
cat file1 | xargs [email protected] bash -c " \
seven_days_ago=$(date -v-7d +%s); \
input=\$(date -j -f \"%b %d %Y %R%p\" \"@\" +%s); \
if [ \"\$seven_days_ago\" -gt \"\$input\" ]; then \
echo \"@\"; \
fi;"
輸出如下。這降低了10月5日和07日比7天更接近的日期。
Sep 15 2017 11:04AM
Sep 16 2017 10:07AM
Sep 19 2017 11:44AM
Sep 20 2017 10:08AM
Sep 21 2017 10:03AM
Oct 02 2017 10:03AM
你怎麼GNU日期和BSD日期區分?
要檢查執行:
$ man date | tail -n 1
GNU coreutils 8.22
VS
$ man date | tail -n 1
BSD August 16, 2007 BSD
該文件包含的細節象下面這樣: 'code' asdffsdvdsds,sdffsfdswe,123142121,adf123,12341411sdcscr,2017年9月15日11:04 asdffsdvdsds,sdffsfdswe,123142121,adf123,12341411sdcscr,2017年9月15日11:04 asdffsdvdsds, sdffsfdswe,123142121,adf123,12341411sdcscr,2017年9月15日上午11點04 'code' 同樣,當前代碼給出了下面的錯誤: 日期:無效日期 bash中:行0:[::整數表達預期 – ninja67
@ ninja67你檢查了你正在運行的日期命令嗎?執行'man date | tail -n 1' –
@ ninja67我已經擴展了我的答案來處理兩個日期命令。如果你仍然有問題,請看看並告訴我。 –
你好,你想要什麼樣的比較作出的,什麼是你想要的結果,有什麼標誌要漲到做。 –
我有一個數據的文件,如果有一個字段與上述格式的日期。我想比較當前日期和文件中的日期,並將包含7天以前日期的行重定向到一個新文件中。 ' – ninja67
'比較文件中的日期'你能告訴我們該文件是怎麼樣的嗎? –