高分——Linux 文档命令操作,高手进!!

来源:百度知道 编辑:UC知道 时间:2024/06/02 17:22:39
219.140.61.6 - - [23/Apr/2009:18:40:18 +0800] "GET /lihk/fadf/2007/09/21/1794313.aspx HTTP/1.1" 200 10531 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" |cnt_uid_www=587471eda0d0c42b06437a4928603aeb; IMMsgID_d41d8cd98f00b204e9800998ecf8427e=157; __gads=ID=0d1b79bf37f65fb3:T=1239256287:S=ALNI_MZtc8lDMhIKeehqppCenoX_2fK8yQ; UN=agagagag9; _user_sid=9c58d7de562f56ecd86fd63cab405ea8; LastVisitedForum=8b327318-2c42-4a49-8aed-ef8c33697e7f*af4def64-b27c-46b8-9f61-1e38daba3c8a; __utma=17226283.1806326198.1239338972.1239338972.1240398706.2; __utmz=17226283.1240398706.2.2.utmccn=(organic)|utmcsr=baidu|utmctr=tomcat+%B2%BB%C5%E4%D6%C3%BB%B7%BE%B3%B1%E4%C1%BF|utmcmd=organic; WEA_u=39041013100514885; WEA_lu=http%3A//blog.csdn.net/cissyring/archive/2008/12/11/3499453.aspx; WEA_lo=1240234549;
上面的所有内容为一个名为1.log日志里的一行,我想用一条命令提取出类似于:
219.140.61.6 23/Apr/2009:18:40:18 /tang08/archive/2007/09/21/1794313.aspx UN=agagagag9;
这样的一

你都试一下,但是你的这一行未必有代表性

awk '{print $1" "substr($4,2)" "$7" "$26}' aa.log

sed 's/^\(.*\) - - \[\(.*\)+[0-9]*\].*GET \(\/.*\)HTTP\/.*\(UN=[a-z]*[0-9]; \).*/\1 \2\3 \4/' aa.log

根据你这三行我修改一下<测试可用>:

awk '{for(i=1;i<100;i++){if($i ~/UN=/){print $2"\t"substr($5,2)" "$8" "$i}}}' aaa.log