我需要使用grepandawk来匹配两种类型的模式,但我无法弄清楚语法。
我的文件具有以下值:
sample1,gicode1,123,4541,221,3661,Sodalis sp.1
sample2,gicode1,123,0322,12,112342,Sodalis sp.2
sample3,gicode1,112,4541,00,2342,Candidatus sp.
sample4,gicode1,2341,4541,00,9606,Homo sapiens
Run Code Online (Sandbox Code Playgroud)
我需要获取具有Sodalis. 这可以在名称中(所以第 7 列)或基于出租车,因为有时出现的命名不准确。ID 是第 6 列。
我的问题是有时第 6 列中的 ID 可以与其他列中不是id 的值匹配。如果我想要Sodalis带有 ID的物种2342,它会在样本 3 中正确显示,但它也是样本 4(第 3 列)中的评分值。
我可以使用awk -F, '$6==2342'或仅使用名称获取正确列中的 ID,grep 'Sodalis'但我遇到了将两者结合起来的问题,如下所示:
cat myfile.txt | grep "Sodalis" OR awk -F, '$6==2342' | wc -l
Run Code Online (Sandbox Code Playgroud)
回报应该是 3,但我得到 2(for grep)或 1(for awk)。我已经试过许多这样的变化||或&甚至:
cat myfile.txt | grep "Sodalis" || …Run Code Online (Sandbox Code Playgroud)