在这些混合列中获取时间字符串的方法:
new1 new11 1.1.1.1 application id1223 831582 start 09:21:12 05/24/2013 -- --
new1 new11 1.1.1.1 application ffd1234 1085500 start -- -- 09:21:04 05/24/2013
预期观点:
09:21:12 05/24/2013
09:21:04 05/24/2013
答案 0 :(得分:4)
我真的认为你需要付出一些努力。无论如何(我的错)我无法帮助尝试grep
:
grep -Eo '[0-9]{2}:[0-9]{2}:[0-9]{2} [0-9]{2}/[0-9]{2}/[0-9]{4}'
我们的想法是使用以下格式获取数据NN:NN:NN NN/NN/NNNN
,其中N是数字。 [0-9]{2}
代表 2次[0-9] 。
$ grep -Eo '[0-9]{2}:[0-9]{2}:[0-9]{2} [0-9]{2}/[0-9]{2}/[0-9]{4}' file
09:21:12 05/24/2013
09:21:04 05/24/2013
更短(感谢Jaypal):
grep -Eo '([0-9]{2}:){2}[0-9]{2} ([0-9]{2}/){2}[0-9]{4}'
答案 1 :(得分:3)
perl -lne 'print $1 if(/(\d+:\d+:\d+\s+\d+\/\d+\/\d+)/)' your_file
答案 2 :(得分:2)
sed -r 's/.*start(.*)/\1/;s/-| //g' file
或
awk '{gsub(/-/,"",$0);print $8,$9}' file
答案 3 :(得分:2)
这可能适合你(GNU sed):
sed -r 's|.*(..:..:.. ../../....).*|\1|' file
答案 4 :(得分:1)
打印该范围内非"--"
的列
perl -lane 'print "@{[grep { $_ ne q(--) } @F[7..$#F] ]}"' file