首页 > 解决方案 > 使用 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]?$' file | head

grep '[ACTG]?\s[ACTG]?$' file | head

grep -E '.?\s.?$' file

使用最后一个命令,我得到以下信息:

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

谢谢您的帮助!

标签: regexlinuxunixgrep

解决方案


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

grep -E '\s.\s.$' file

或者

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

要么应该工作。


推荐阅读