查找一个字符串匹配的基本代码
cat fileA | grep -Fwf include.txt
我们如何使用代码来匹配include.list中的至少两个模式
file A
data1 khc001 khc002 vp005
data1 fbc001 cs004 khc001
include.txt
khc001
khc002
正确的输出线1: data1 khc001 khc002 vp005
在下面的示例中,例如,仅列出了2种模式,但是列表中包含的内容更多,这就是为什么awk '/pattern1/ && /pattern2/'
不合适的原因。
使用,这很容易做到awk
,计算每行中fileA
等于include.txt
文件中字符串的字段数:
awk 'NR == FNR { p[$1]; next }
{
c = 0
for (i = 1; i <= NF; ++i) if ($i in p) c++
if ( c >= 2 ) print
}' include.txt fileA
这首先读取include.txt
文件,并将单词用作关联数组中的键。然后,它读取第二个文件,并针对每一行,遍历字段并测试每个文件,以查看其是否与任何键匹配。
对于每个匹配项,我们增加一个计数器,如果计数器末尾等于或大于2,则打印该行。
针对喜欢“单线”的人的代码的替代表达:
awk 'NR==FNR {p[$1];next} {c=0;for (i=1;i<=NF;++i) if ($i in p) c++} c>=2' include.txt fileA
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句