当我cat文件时,输出格式的示例是:
ok: servername Mon May 23 00:00:00 EDT 2018 ok: servername Thu Jul 16 00:00:00 EDT 2019
我希望格式类似于
ok: servername 05/23/2018 ok: servername 07/16/2019
我需要使用Linux bash shell来实现。如果有人能帮助我,我将非常感激。
vaqhlq811#
当性能很重要时。在script.awk中输入:
script.awk
BEGIN{ m["Jan"]="01"; m["Feb"]="02"; m["Mar"]="03"; m["Apr"]="04"; m["May"]="05"; m["Jun"]="06"; m["Jul"]="07" # to be completed } { print $1, $2, m[$4] "/" $5 "/" $8 }
用法:awk -f script.awk logfile输出:
awk -f script.awk logfile
jqjz2hbq2#
使用GNUx 1 m0n1x,您可以指定一个包含所有日期字符串的输入文件;结合cut和paste:
cut
paste
paste -d ' ' \ <(cut -d ' ' -f-2 infile) \ <(date -f <(cut -d ' ' -f3- infile) '+%m/%d/%Y')
输出:
它使用进程替换为date -f构建一个临时输入文件,并为paste构建一个新的输出文件。
date -f
ukxgm1gy3#
根据man date,该命令能够
man date
通过--date或-d。所以如果你把你的值存储在一个变量中
--date
-d
DATE="Thu Jul 16 00:00:00 EDT 2019"
你可以用类似
date --date="${DATE}" +%m/%d/%Y
重新格式化时间戳。有关更多信息,您可以查看Convert date formats in bash。
3条答案
按热度按时间vaqhlq811#
当性能很重要时。在
script.awk
中输入:用法:
awk -f script.awk logfile
输出:
jqjz2hbq2#
使用GNUx 1 m0n1x,您可以指定一个包含所有日期字符串的输入文件;结合
cut
和paste
:输出:
它使用进程替换为
date -f
构建一个临时输入文件,并为paste
构建一个新的输出文件。ukxgm1gy3#
根据
man date
,该命令能够通过
--date
或-d
。所以如果你把你的值存储在一个变量中你可以用类似
重新格式化时间戳。
有关更多信息,您可以查看Convert date formats in bash。