regex - 使用 grep 的乘数问题

标签 regex linux unix grep

我有以下文件

1:10177 rs367896724 A AC
1:10352 rs555500075 T TA
1:10616 rs376342519 CCGCCGTTGCAAAGGCGCGCCG C
1:11012 rs544419019 C G
1:11063 rs561109771 T G
1:13110 rs540538026 G A
1:13116 rs62635286 T G
1:13118 rs62028691 A G
1:13273 rs531730856 G C
1:13284 rs548333521 GT A

最后两列只能有值 [ATCG]。我想 grep 所有在最后两列中只有一个字母的行

预期输出: 我有以下文件

1:11012 rs544419019 C G
1:11063 rs561109771 T G
1:13110 rs540538026 G A
1:13116 rs62635286 T G
1:13118 rs62028691 A G
1:13273 rs531730856 G C

我尝试了以下方法,但没有得到任何结果

grep -F '[ACTG]?\s[ACTG]?$' 文件 |头

grep '[ACTG]?\s[ACTG]?$' 文件 |头

grep -E '.?\s.?$' 文件

通过最后一条命令,我得到了以下信息:

1:10616 rs376342519 CCGCCGTTGCAAAGGCGCGCCG C
1:11012 rs544419019 C G
1:11063 rs561109771 T G
1:13110 rs540538026 G A
1:13116 rs62635286 T G
1:13118 rs62028691 A G
1:13273 rs531730856 G C
1:13284 rs548333521 G A

感谢您的帮助!

最佳答案

如果您只想在最后两列中使用一个字符,请使用前导空白字符。根据您的描述,听起来也不应该有任何可选字符。

grep -E '\s.\s.$' 文件

或者

grep -E '(\s[ACTG]){2}$' 文件

两者都可以。

关于regex - 使用 grep 的乘数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57186460/

相关文章:

javascript - 仅使用正则表达式匹配单词后的所有内容

regex - 如何从 linux 中的文件的每一行中删除与模式匹配的重复单词

c - 当父进程调用 exec 命令时,子进程会发生什么

linux - libavcodec 56 即使已安装也未找到

bash - 视频开头和结尾的屏幕截图

javascript - JavaScript 中有 RegExp.escape 函数吗?

PHP preg_match_all 正则表达式从 css 获取像素值( "px")

linux - Linux 中的中断处理和挂起中断

sorting - gnu 排序的意外结果

linux - 防止用户从 unix 中的某个目录中执行某个命令