嗨,我正在尝试使用bash脚本提取日期和其他字段,但会卡住。
Mon Mar 4 22:24:05 2019 [pid 18349] [myuser] OK UPLOAD: Client ::ffff:127.0.0.1, /path/to/file, 3746080 bytes, 496.03Kbyte/sec
我能够获取以下值
date = ```echo $log | awk '{print $3 FS $2 FS $5}'```
time = `echo $log | awk '{print $4}'`
action = `echo $log | awk '{print $9 FS $10}'`
size = `echo $log | awk '{print $14}'`
但是我在提取ip
和username
时遇到了麻烦。
for ip `echo $log | awk '{print $12}'`
给出::ffff:127.0.0.1,
如何从中提取IP 127.0.0.1
?有人可以帮忙吗?谢谢
答案 0 :(得分:0)
只需对您自己的代码进行一些改进:
echo $log | awk '{gsub(/[^0-9.]/,"",$12);print $12}'
127.0.0.1
echo $log | awk '{gsub(/[\[\]]/,"",$8);print $8}'
myuser
最好像这样使用它们:
ip=$(echo $log | awk '{gsub(/[^0-9.]/,"",$12);print $12}')
username=$(echo $log | awk '{gsub(/[\[\]]/,"",$8);print $8}')