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