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

gawk -F '[\t,]' 'NR==FNR{a[$3]=$1","$2","$3}NR>FNR{s=$0;for(i in a){if($6~i)s=s","a}; print s}' a.txt b.txt

renxiao2003 发表于 2020-10-28 21:43

强大 的AWK,学习了。
页: [1]
查看完整版本: 急,求一个shell ,通过截取匹配2个文本内容