[QFJ Timer]:2014-07-02 06:19:09,030:bla.all.com.bla.bla.ppp.xxx.abcsedf:
我想提取日期和时间。 所以日期没问题:
cat bla.log |awk -F: '{print $2}'|awk '{print $1}'
现在问题在于时间问题。
如果我这样做:cat bla.log |awk '{print $3}'
所以我得到:
06:19:09,030:bla.all.com.bla.bla.ppp.xxx.abcsedf:
这意味着我需要另一个grep吗?
但我做了很多尝试同时使用'FS'并且没有得到时间。
有人可以提出建议吗?
谢谢。
答案 0 :(得分:2)
在awk的GNU版本中FS可以是正则表达式:
echo "[QFJ Timer]:2014-07-02 06:19:09,030:bla.all.com.bla.bla.ppp.xxx.abcsedf:" |
awk -vFS=":|," '{ print $2":"$3":"$4;}'
吐出
2014-07-02 06:19:09
您的左侧分隔符为“:”,右侧为“,”,不幸的是,小时,分钟和秒也由左侧分隔符分隔。这可以通过打印3美元和4美元来解决。快速而肮脏的解决方案,但它不会非常强大。
答案 1 :(得分:1)
您可以将sed用于此目的,
$ echo '[QFJ Timer]:2014-07-02 06:19:09,030:bla.all.com.bla.bla.ppp.xxx.abcsedf:' | sed 's/^[^:]*:\([^,]*\).*/\1/g'
2014-07-02 06:19:09
答案 2 :(得分:0)
cat bla.log |awk -F":" '{print $2":"$3":"$4}' | awk -F"," '{print $1}'
哪个可以帮到你:
2014-07-02 06:19:09
答案 3 :(得分:0)
您可以使用grep
,因为它的意思是:
grep -o '[0-9]\{4\}\(-[0-9]\{2\}\)\{2\}\(\( \|:\)[0-9]\{2\}\)\{3\}' log.file
或更简单一点,egrep
:
egrep -o '[0-9]{4}(-[0-9]{2}){2}(( |:)[0-9]{2}){3}' log.file