Chinaunix

标题: 截取字符 [打印本页]

作者: sauer    时间: 2016-11-17 11:26
标题: 截取字符
本帖最后由 sauer 于 2016-11-17 11:27 编辑

多行的文本,每行字符基本如下

10:50:06 192.168.0.100 /download?key=1000&type=1&uid=12345678&type=4&fileid=888

取前两列,uid后面的数字作为第三列,结果为
10:50:06 192.168.0.100 12345678

应该怎么弄?


作者: moperyblue    时间: 2016-11-17 11:30

  1. sed -r 's/^((\S+\s+){2}).*uid=([0-9]+).*/\1\3/'
复制代码

作者: jason680    时间: 2016-11-17 12:07
回复 1# sauer

>>取前两列uid后面数字作为第三列...

$ awk '{if(match($0,"uid=([^&]+)",m))print $1,$2,m[1]}' FILE
10:50:06 192.168.0.100 12345678


作者: sunzhiguolu    时间: 2016-11-17 12:30
  1. perl -nle 'print "@a" if(@a=/(\d+(?:(?:[:.])\d+)+)|uid=(\d+)/g)' f
复制代码

作者: moperyblue    时间: 2016-11-17 12:38

  1. awk '{print $1,$2,gensub(/.*uid=([0-9]+).*/,"\\1",1)}'
复制代码

作者: 加油AlwaysWin    时间: 2016-11-17 13:06
  1. cat test04.txt |sed -nr 's/(.*)\/.*uid=(\<[0-9]+\>).*/\1\2/gp'
复制代码

作者: leijskg    时间: 2016-11-17 14:12
提示: 作者被禁止或删除 内容自动屏蔽
作者: sunzhiguolu    时间: 2016-11-17 14:15
  1. perl -ple 's%(?(?!&uid)[/&]\D+=\d+|\D+)%%g' f
复制代码

作者: fh21_xuejinlian    时间: 2016-11-17 14:16
  1. paste <(awk '{print $1,$2}' file ) <(grep -oP '(?<=uid=)\d+' file)
复制代码

作者: sauer    时间: 2016-11-17 14:20
回复 3# jason680
这个能详细解释一下么,不太明白,最后那个为什么是\3




作者: jcdiy0601    时间: 2016-11-21 10:02
回复 1# sauer

  1. awk 'BEGIN{FS="[ &]+"}{sub("uid=","",$5);print $1,$2,$5}' file
复制代码


作者: sditmaner    时间: 2016-11-21 12:48
cat test04
作者: victor2016    时间: 2016-11-21 16:37
grep -Po '.*(?=/)|(?<=uid=)\d+(?=&type)' file |xargs
作者: Lemon_乐    时间: 2016-11-21 19:02
提示: 作者被禁止或删除 内容自动屏蔽
作者: zl624867243    时间: 2016-11-21 22:13
标题: 我来个python版本的吧
本帖最后由 zl624867243 于 2016-11-21 22:33 编辑
  1. #!/usr/bin/python
  2. #coding:utf8
  3. import re
  4. f = open("/root/d.txt",'r')
  5. for i in f.readlines():
  6.     result=re.findall("uid=(.*)&type.*",i)
  7.     print i[0:8]+" "+i[9:22]+" "+result[0]
  8. f.close()
复制代码


作者: moperyblue    时间: 2016-11-21 22:33

  1. grep -oP '^(\s*\S+\s+){2}|uid=\K[^&]*'|xargs
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2