如何在特定列上grep子字符串

时间:2016-05-11 09:37:57

标签: awk grep

我的文件值为$ 4,如下所示:

Deaf, a 603622 (3), Auto dom; 153650 (3), Autosomal dominant; Fechtner (4)
cancer, somatic, 114500 (2); Rubinstein-Taybi syndrome 2, 613684 (3)

$ 4有多个分隔符:空格,逗号,分号

我需要通过匹配正则表达式(2)或(3)或(4)来提取行。例如,我尝试使用awk命令匹配和grep行($ 2)使用awk命令:

awk -F "\t" '{if ($4 ~ "(2)") print $0;}' 

awk -F "\t" '{if ($4 ~ "2") print $0;}' 

这2个解决方案可以使用2或'('或')'

awk -F "\t" '{if ($4 = "(2)") print $0;}' 

打印(2)$ 4

任何使其有效的建议都会有所帮助。

1 个答案:

答案 0 :(得分:0)

你的问题不明确,有很多假设,这是一个可能的解决方案。我不确定这是不是你要求的。

情况下-I:

  #If no integer mentioned inside (),   

   cat sample
   Deaf, a 603622 (s), Auto dom; 153650 (s), Autosomal dominant; Fechtner (a) cancer, somatic, 114500 (a); Rubinstein-Taybi syndrome 2, 613684 (a)"


 #Then following command will give nothing
  cat sample|awk '/\([0-9]\)/ { print }'

凯特-II:

当()内有一些数字时,:

cat sample
Deaf, a 603622 (s), Auto dom; 153650 (s), Autosomal dominant; Fechtner (a) cancer, somatic, 114500 (a); Rubinstein-Taybi syndrome 2, 613684 (2)"


 cat sample|awk '/\([0-9]\)/ { print }'
 Deaf, a 603622 (s), Auto dom; 153650 (s), Autosomal dominant; Fechtner (a) cancer, somatic, 114500 (2); Rubinstein-Taybi syndrome 2, 613684 (a)"