Chinaunix

标题: 急,求一个shell ,通过截取匹配2个文本内容 [打印本页]

作者: wzl189189    时间: 2020-07-30 12:33
标题: 急,求一个shell ,通过截取匹配2个文本内容
a.txt分隔符是tab键,文本内容如下
a b /baidu/warn/user
a c /sodu/223/eee/23/group
1 2 /baidu/a/c/d/e/code

b.txt分隔符是英文逗号,文本内容如下
1,2a,b,400,a,/baidu/warn/user/sdfsdf/a=b/cc=23/aac.txt
22,3d,b,202,dd./baidu/warn/user/u=12/a=b/cc=23/vvvc.txt
cca,as,cde,123,df,/sodu/223/eee/23/group/c=d/aa20200601.log
12,a23,cd23,309,daf,/sodu/223/eee/23/group/c=d/aa20200602.log
233,33,c133,44,sdf,/baidu/a/c/d/e/code/a.log
df,sd,23,23,a,/xiao/xl/a.txt

第一个结果是把a.txt第3个字段匹配b.txt中第6个字段,想要的结果是:
1,2a,b,400,a,/baidu/warn/user/sdfsdf/a=b/cc=23/aac.txt,a,b,/baidu/warn/user
22,3d,b,202,dd./baidu/warn/user/sdfsdf/a=b/cc=23/vvvc.txt,a,b,/baidu/warn/user
cca,as,cde,123,df,/sodu/223/eee/23/group/c=d/aa20200601.log,a,c,/sodu/223/eee/23/group
12,a23,cd23,309,daf,/sodu/223/eee/23/group/c=d/aa20200602.log,a,c,/sodu/223/eee/23/group
233,33,c133,44,sdf,/baidu/a/c/d/e/code/a.log,1,2,/baidu/a/c/d/e/code
df,sd,23,23,a,/xiao/xl/a.txt


作者: Shell_HAT    时间: 2020-08-03 10:50
  1. gawk -F '[\t,]' 'NR==FNR{a[$3]=$1","$2","$3}NR>FNR{s=$0;for(i in a){if($6~i)s=s","a[i]}; print s}' a.txt b.txt
复制代码

作者: renxiao2003    时间: 2020-10-28 21:43
强大 的AWK,学习了。




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