Filter 使用awk/grep从数据库中提取,过滤

Filter 使用awk/grep从数据库中提取,过滤,filter,awk,grep,Filter,Awk,Grep,我有一个大的以制表符分隔的数据库,看起来像: 1 14933 14933 G A ID=COSN404397;OCCURENCE=1(lung) 1 14948 14948 G A ID=COSN415697,COSN415698;OCCURENCE=2(urinary_tract) 1 69537 69537 G T ID=COSM536198;OCCUR

我有一个大的以制表符分隔的数据库,看起来像:

1       14933   14933   G       A       ID=COSN404397;OCCURENCE=1(lung)  
1       14948   14948   G       A       ID=COSN415697,COSN415698;OCCURENCE=2(urinary_tract)  
1       69537   69537   G       T       ID=COSM536198;OCCURENCE=1(lung)  
1       69538   69538   G       A       ID=COSM75742;OCCURENCE=1(ovary)  
...
我试图使用awk或grep只保留出现次数>=3的行(是的,整个数据库都拼错了!),但我似乎不知道如何最好地分割/扫描第6列…

尝试以下方法:

$ awk -F\; '{ if (substr($2,11,index($2,")")) >= 3) print $0; }' x.txt

这条短线应该适合你。顺便说一句,您当前的示例没有任何
occurrence>=3的行(
:)

嗯。。。如果打一点高尔夫球<代码>(=是键…:D

awk -F'[(=]' '$3>2' file

短的一行,仍然保持
FS
可用:

$ awk -F'[(=\t;]' '$9>2' file

试着自己写一些东西,然后当它不起作用时,把它带给我们来帮助你。你开始,我们帮助。我们不是为你写的。向我们展示你尝试过的实际代码,然后我们可以从那里帮助你。我刚刚注意到,另一个
(=
。但这次我们都有
(=
:)@Kent我确保它
(=
今天!你打得太远了,OP需要对文件做更多的处理。我至少要把
\t
作为
FS
@sudo\O,但我刚刚做了一个本地测试,文件中有
\t
时,我的两行都起作用了…没有写回
$0
,无论
\t
FS还是OFS
中都没有关系…我该怎么办你认为?我错了吗?我的意思是如果OP想要做一些像
awk-F'[(=\t;]''9>2{打印$2,$3,$4,$5}'file
。离开
\t
可能是个好主意。我不是说如果不用作
FS
,生成的文件将丢失
\t
分隔符。希望这更清楚。@sudo\O我明白了你的意思。我在问题OP中看到了awk或grep。所以我认为情况并非如此。但你的想法一点也不坏。
$ awk -F'[(=\t;]' '$9>2' file