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
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
perl -nle 'print "@a" if(@a=/(\d+(?:(?:[:.])\d+)+)|uid=(\d+)/g)' f
复制代码
作者:
moperyblue
时间:
2016-11-17 12:38
awk '{print $1,$2,gensub(/.*uid=([0-9]+).*/,"\\1",1)}'
复制代码
作者:
加油AlwaysWin
时间:
2016-11-17 13:06
cat test04.txt |sed -nr 's/(.*)\/.*uid=(\<[0-9]+\>).*/\1\2/gp'
复制代码
作者:
leijskg
时间:
2016-11-17 14:12
提示:
作者被禁止或删除 内容自动屏蔽
作者:
sunzhiguolu
时间:
2016-11-17 14:15
perl -ple 's%(?(?!&uid)[/&]\D+=\d+|\D+)%%g' f
复制代码
作者:
fh21_xuejinlian
时间:
2016-11-17 14:16
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
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 编辑
#!/usr/bin/python
#coding:utf8
import re
f = open("/root/d.txt",'r')
for i in f.readlines():
result=re.findall("uid=(.*)&type.*",i)
print i[0:8]+" "+i[9:22]+" "+result[0]
f.close()
复制代码
作者:
moperyblue
时间:
2016-11-21 22:33
grep -oP '^(\s*\S+\s+){2}|uid=\K[^&]*'|xargs
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2