如何用shell解析这个文本

langzi520 2011-09-28 10:41:42
afct=too&kid=185265888_@U&sip=&sid=&pid=1&lac=0&acc=0&lad=0&rtt=0&rttmax=&rttavg=&pba=0&pbd=0&ara=0&arc=0&pdc=0&pdt=0&pda=0&pds=0&pks=0&pdn=0&psc=0&game=&soft=
1.36.40&time=13930923,-
afct=too&kid=878434466_@U&sip=118.72&sid=95230&pid=1&lac=0&acc=0&lad=0&rtt=0&rttmax=&rttavg=|0:0|0:0|0:0&pba=0&pbd=0&ara=0&arc=0&pdc=0&pdt=0&pda=0
&pds=0&pks=0&pdn=0&psc=0&game=&soft=107.107.103&time=13031160,-

如上面每段是“afct”开头 ,“-”结尾, 取出kid的值, soft的值,存放到一个文件,上面的结果如下:
185265888 1.36.40
878434466 107.107.103
...全文
129 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
langzi520 2011-10-07
  • 打赏
  • 举报
回复
请上面两位 移步http://topic.csdn.net/u/20110930/15/4faf9968-889f-47bc-96b8-686f3ac3f839.html
Linux-Torvalds 2011-10-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 langzi520 的回复:]

请上面两位 移步http://topic.csdn.net/u/20110930/15/4faf9968-889f-47bc-96b8-686f3ac3f839.html
[/Quote]
$ echo "dd&suid=1852608_@U&sip=&sid=&pid=1&lac=0&acc=0&lad=0&rtt=0&rttmax=&rttavg=&pba=0&pbd=0&ara=0&arc=0&pdc=0&pdt=0&pda=0&pds=0&pks=0&pdn=0&psc=0&game=&soft=1.6.40&uhb=0&ulb=0&dhb=0&dlb=0&czt=&mfc=0&csc=&scp=&sgp=0&usp=1&ynt=1&inp=0&hms=0&imt=0&hht=07050&code=0c1ebde2a9c2fdbe894ce68c43ed4c2a&key=85896b7cba8b06c4ac25&time=1308930923,-" | grep -o "suid=\([0-9]\+\|\)\|sid=\([0-9]\+\|\)\|scp=\([0-9]\+\|\)\|game=\([0-9]\+\|\)\|soft=\([0-9]\+\|\)\|czt=\([0-9]\+\|\)\|djc=\([0-9]\+\|\)\|ara=\([0-9]\+\|\)\|mfc=\([0-9]\+\|\)\|ver=\([0-9]\+\|\)\|time=\([0-9]\+\|\)" | awk 'BEGIN{FS="="}{printf("%s|",$2)}END{printf("\n")}'
1852608||0||1||0||1308930923|
joan8363 2011-09-28
  • 打赏
  • 举报
回复
cat file1 | grep -Po '(?<=kid=)\d+|(?<=soft=)[\d.]+' | xargs -n2 > file2
file2是你需要的
jihen 2011-09-28
  • 打赏
  • 举报
回复
其实你这里不需要知道什么开始什么结束啊,直接把kid的值, soft的值取出来就好啦.
qq120848369 2011-09-28
  • 打赏
  • 举报
回复
你贴得有点乱,用&做分隔符,awk就可以做了。
langzi520 2011-09-28
  • 打赏
  • 举报
回复
请joan8363 jihen 联系我
留下QQ 或者加我QQ 95 25 65 56 马上结贴给分
jihen 2011-09-28
  • 打赏
  • 举报
回复
楼上正解,
我觉得写成这样更简单.
grep -Po "(?<=kid=|soft=)[0-9.]*" 你要弄的文件 |xargs -n2 > file2

其实楼主的东西也可以用awk固定筛选,因为你每行的元素个数和kid,soft位置都是一样的.

18,779

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 专题技术讨论区
社区管理员
  • 专题技术讨论区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧