我希望能够从日志文件中解析日期和时间。目前它们的格式如下:
“02 / Jun / 2009:14:38:50”但我想使用linux命令行提供的内容将它们分成不同的列,以便生成的输出如下所示:
“02 / Jun / 2009”“14:38:50”
有人可以说明如何做到这一点吗?
此致
答案 0 :(得分:3)
如果没有其他格式的行,Chris的答案是最好的。如果您只需要影响具有该特定格式的行,请执行以下操作:
cat log | sed -e 's/"\([^:]*\):\([^"]*\)"/"\1" "\2"/'
答案 1 :(得分:1)
如果这就是每一行的全部内容,可能是:
cat file.txt | sed -e 's/:/" "/'
答案 2 :(得分:1)
Pure Bash:
while read line ; do echo ${line/:/\" \"}; done < logfile
答案 3 :(得分:0)
sub()函数返回1,如果替换成功,则:
cat file.txt | awk 'sub(/:/,"\" \"")'
GNU awk可以使用gensub()函数,所以这是下面的反向引用示例。
cat file.txt | gawk '$0=gensub(/("[^:]*):([^"]*")/,"\\1\" \"\\2",1)'
答案 4 :(得分:0)
寻找正则表达式的biterscript“&amp;:&amp;:&amp;:&amp;”并在第一个结肠之前和之后分开。 (&amp;表示任意数量的任何字符)。
var str log
cat "logfile" > $log
while ( { sen -r "^&:&:&:&^" $log } > 0 )
do
var str datetime, date, time
stex -r "^&:&:&:&^" $log > $datetime
stex -p "]^:^" $datetime > $date # String before the first : is date.
stex -p "^:^[" $datetime > $time # String after the first : is time.
echo $date "\t" $time
done
要尝试,您可以下载biterscripting。谷歌,或安装说明在http://www.biterscripting.com。