首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >提取包含0、0、0、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、

提取包含0、0、0、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、
EN

Unix & Linux用户
提问于 2018-12-14 06:32:58
回答 2查看 97关注 0票数 1

我有一个csv文件,.Here是它的样子:

代码语言:javascript
运行
复制
chr22,  Position ,  A     ,       B ,      C ,   D , E
22   ,  16050115 ,  0|0:404     ,  0     , 0    ,  0  ,    1|1:5
22    ,16050213    ,0|0:403  ,     0    ,  0   ,    0  ,   3|4:6
22 , 16050607  ,    1|0:340     , 1|1:3,  0   ,    0  ,    1|1:3
22   16050737 ,    0|0:402   ,   3|0:4 , 0|7:23 , 0  ,      0 
22 16050783  ,   0|0:404 ,       2|2:5 , 0|1:31 , 1|0:51,   0

0|0:404表示0|0的计数是404,依此类推。我只想提取0|01|00|11:1的值--输出应该是:

代码语言:javascript
运行
复制
chr22, Position, A ,B, C ,D, E
22 ,16050115, 0|0:404 ,0 ,0 ,0 ,1|1:5
22 ,16050213, 0|0:403, 0 ,0, 0, 0
22 ,16050607, 1|0:340, 1|1:3, 0 ,0 ,1|1:3
22 ,16050737, 0|0:402, 0 ,0 ,0, 0
22 ,16050783, 0|0:404 ,0 ,0|1:31 ,1|0:51, 0

我试过grep -e '0|0:' -e '1|1:' -e '0|1:' -e '1|1 /path/file.csv似乎不起作用。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2018-12-14 07:15:19

原始命令行

我认为下面的命令行将通过跳过“违犯”行来使用逗号分隔的文件来完成该操作,

代码语言:javascript
运行
复制
grep -v -e ', *[2-9]|' -e '|[2-9]:' file.csv

你可以用一个带有颜色的小文件检查,

代码语言:javascript
运行
复制
grep -v -e ', *[2-9]|' -e '|[2-9]:' file.csv |grep --color '.|.'

哪些行由grep找到(在前面的命令行中被选项-v排除在外),

代码语言:javascript
运行
复制
grep -e ', *[2-9]|' -e '|[2-9]:' file.csv |grep --color '.|.'

下面的命令行将使用一个以选项卡分隔的文件执行此操作,

代码语言:javascript
运行
复制
grep -v -e '\t[2-9]|' -e '|[2-9]:' Reddy.tab

或者,如果您希望进行稍微宽松的检查,那么下面的命令行可以工作,

代码语言:javascript
运行
复制
grep -v -e '[2-9]|' -e '|[2-9]:' Reddy.tab file.csv

命令行响应OP

的评论

我认为下面的命令行将对逗号分隔的文件和选项卡分隔的文件执行OP所需的操作,

代码语言:javascript
运行
复制
sed -e 's/[2-9]|[0-9]:[0-9]*/NA/' -e 's/[0-9]|[2-9]:[0-9]*/NA/' file.csv
票数 2
EN

Unix & Linux用户

发布于 2018-12-14 08:59:04

不确定这种情况是否需要grep,但是使用perl,您可以这样做来删除不需要的项:

代码语言:javascript
运行
复制
perl -pe 's/, ?[2-9]\d*\|\d+:\d+//g; s/, ?\d+\|[2-9]\d*:\d+//g' /path/to/file.csv
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/487912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档