Chinaunix
标题:
文本列的位置不固定,需要提取部分列
[打印本页]
作者:
jianpan168
时间:
2016-08-03 17:12
标题:
文本列的位置不固定,需要提取部分列
比如:日志中出现如下内容,但model_num、build_num等,列的位置不固定,需要提取这两个列,有什么办法?
model_num[H30-T00],base_ver[MOLY.WR8.W1319.MD.TG.MP.V8.P75, 2014/06/06 06:56],build_num[hwH30-T00],channel[],sdk_ver[2.0.5]
需要的结果:
model_num[H30-T00] build_num[hwH30-T00]
作者:
sunzhiguolu
时间:
2016-08-03 17:17
model_num, build_num 列的相对顺序固定吗?
作者:
moperyblue
时间:
2016-08-03 17:32
本帖最后由 moperyblue 于 2016-08-03 18:07 编辑
grep -oP '(model_num|build_num)[^,]*'|xargs
sed -r 's#(model_num|build_num)[^,]*#<&>#g;s/>.*</ /;s/.*<|>.*//g'
复制代码
作者:
jason680
时间:
2016-08-03 17:46
本帖最后由 jason680 于 2016-08-03 17:50 编辑
回复
1#
jianpan168
which one do you like
$ awk 'function get(x){if(match($0,"("x"\\[([^\\]]*)\\])",a))return(a[
2
])}{print get("model_num"),get("build_num")}' FILE
H30-T00 hwH30-T00
$ awk 'function get(x){if(match($0,"("x"\\[([^\\]]*)\\])",a))return(a[
1
])}{print get("model_num"),get("build_num")}' FILE
model_num[H30-T00] build_num[hwH30-T00]
$ awk 'function get(x){if(match($0,"("x"\\[([^\\]]*)\\])",a))return(a[
2
])}{print get("base_ver"),get("sdk_ver")}' FILE
MOLY.WR8.W1319.MD.TG.MP.V8.P75, 2014/06/06 06:56 2.0.5
$ awk 'function get(x){if(match($0,"("x"\\[([^\\]]*)\\])",a))return(a[
1
])}{print get("base_ver"),get("sdk_ver")}' FILE
base_ver[MOLY.WR8.W1319.MD.TG.MP.V8.P75, 2014/06/06 06:56] sdk_ver[2.0.5]
作者:
sunzhiguolu
时间:
2016-08-03 17:48
本帖最后由 sunzhiguolu 于 2016-08-03 17:49 编辑
perl -nle '$,="\t";print /((?:model|build).+?),/g' f
复制代码
model_num[H30-T00] build_num[hwH30-T00]
作者:
jianpan168
时间:
2016-08-03 17:52
本帖最后由 jianpan168 于 2016-08-03 17:54 编辑
多谢大家,我试试。
作者:
sunzhiguolu
时间:
2016-08-03 17:58
本帖最后由 sunzhiguolu 于 2016-08-03 18:01 编辑
jason680 发表于 2016-08-03 17:46
回复 1# jianpan168
which one do you like
找错位置了, 谢谢您老人家!!!
perl -nle '$,="\t";print /(?:model|build).+?\]/g' f
复制代码
作者:
jcdiy0601
时间:
2016-08-04 09:31
awk -F, '{for(i=1;i<=NF;i++)if($i~/model_num|build_num/)printf $i" "}{print ""}' file
复制代码
作者:
hz_oracle
时间:
2016-08-04 09:59
awk -F, '{for(i=1;i<=NF;i++)if($i ~/model_num/||$i ~/build_num/)printf $i" ";printf "\n"}' file
作者:
jianpan168
时间:
2016-08-04 10:53
非常感谢!! 学习了。
作者:
少林功夫好
时间:
2016-08-05 09:41
已经是完全看不懂了。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2