[英]grep - How to return the pattern and the matching line when matching two files?
我有两个文件:
pattern.csv,其中包含类似
paul hung
james
julien pierre
和clients.csv包含
Paul Hung Chong;3
James Malroy;4
Julien Pierre Take;5
我想回来
paul hung;Paul Hung Chong;3
james;James Malroy;4
julien Pierre;Julien Pierre Take;5
这样我就可以在pattern.csv中定义的键与client.csv中定义的键之间创建匹配表
到目前为止,我尝试了
grep -i -F -f 'patterns.csv' 'clients.csv' > matching.csv
哪个返回
Paul Hung Chong;3
James Malroy;4
Julien Pierre Take;5
和
grep -i -F -f 'patterns.csv' 'clients.csv' > matching.csv
哪个返回
Paul Hung
James
Julien Pierre
也就是说,图案或匹配的线。 但是我可以将两者合并吗?
谢谢 !
如果gawk适合您:
awk -v IGNORECASE=1 -v OFS=";" 'NR==FNR{a[$0];next}
{for(x in a)if($0~x){print x,$0;break}}' pattern.txt file.csv
请注意,如果您的模式文件包含正则表达式特殊含义的字符,则此行存在一定的风险。
有时候,这就像为工作找到合适的工具一样简单
$ paste -d';' pattern.csv clients.csv
paul hung;Paul Hung Chong;3
james;James Malroy;4
julien pierre;Julien Pierre Take;5
使用awk:
awk -F';' 'FNR==NR{a[++i]=$1;next} {for (k=1; k<=i; k++)
if (index(tolower($1), tolower(a[k]))) print a[k], $0}' OFS=';' g1 g2
paul hung;Paul Hung Chong;3
james;James Malroy;4
julien pierre;Julien Pierre Take;5
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.