Shell
更改從文本文件顯示的日期格式
這段程式碼
grep -i 'logged in' path-to-file | tail | awk '{ print $6,"logged in at",substr($2,1,8),"on",$1"."; }' | sed 's/"//g'
將輸出
暱稱 2017-12-22 22:06:58 登錄。
我想要的是這樣輸出:
暱稱於 2017 年 12 月 22 日晚上 10:06:58 登錄。
unix
date
命令可以以您想要的任何格式列印日期。使用該--date
標誌,您可以列印與目前日期和時間不同的日期和時間。但是,對於date
解析日期的命令,您必須刪除輸入日期中的on。您可以使用以下 sed 命令:sed -r 's,\s+on\s+, ,g'
結合您所需的輸出格式,您將獲得:
date --date="$(echo '22:06:58 on 2017-12-22' | sed -r 's,\s+on\s+, ,g')" '+%r on %B %d, %Y'
現在,您只需要將它與您的 awk 命令結合使用,假設您始終具有相同的格式*“username logged in at date”* ,這可以很容易地完成。請注意,您可以完全不列印on
awk
,因此sed
不再需要呼叫:while read line do echo $line | awk '{print $1" "$2" "$3" "$4" "}' | tr -d '\n' date --date="$(echo $line | awk '{print $5" "$7}' | tr -d '.')" '+%r on %B %d, %Y' done
對於您給出的範例,這將列印(使用 locale
en-NZ
):暱稱於 2017 年 12 月 22 日晚上 10:06:58 登錄