Regex 使用grep的mulit钳子的问题
我有以下文件Regex 使用grep的mulit钳子的问题,regex,linux,unix,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:1328
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
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
其中最后两列只能有值[ATCG]。我想把最后两列中只有一个字母的所有行都涂成灰色
预期产出:
我有以下文件
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
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
谢谢你的帮助 像这样的
awk '!(length($NF)>1 || length($(NF-1))>1)' file
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的字段
较短的版本:
awk 'length($NF$(NF-1))==2' file
awk 'length($3$4)==2' file
仅测试ACTG
awk '$NF$(NF-1)~/^[ACTG]{2}$/' file
awk '$3$4~/^[ACTG]{2}$/' file
像这样的
awk '!(length($NF)>1 || length($(NF-1))>1)' file
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的字段
较短的版本:
awk 'length($NF$(NF-1))==2' file
awk 'length($3$4)==2' file
仅测试ACTG
awk '$NF$(NF-1)~/^[ACTG]{2}$/' file
awk '$3$4~/^[ACTG]{2}$/' file
如果在最后两列中只需要一个字符,请使用前导空白字符。根据您的描述,听起来也不应该有任何可选字符
grep-E'\s.$文件
或
grep-E'(\s[ACTG]){2}$'文件
两者都可以。如果您想在最后两列中只包含一个字符,请使用前导空白字符。根据您的描述,听起来也不应该有任何可选字符
grep-E'\s.$文件
或
grep-E'(\s[ACTG]){2}$'文件
这两种方法都应该有效。也许
awk'$3~/^[ACTG]$/&&$4~/^[ACTG]$/'file>newfile
可以吗?也许awk'$3~/^[ACTG]$/&&$4~/^[ACTG]$/'file>newfile
可以吗?为什么在他的正则表达式只缺少前导空间时建议awk呢?如果有更复杂的事情要做,awk可能是一个好的解决方案。在这篇文章中,我不是唯一一个建议awk
的人。为什么要在他的正则表达式只缺少前导空间的时候建议awk呢?awk
如果有更复杂的事情要做,可能是一个很好的解决方案。在这篇文章中,我并不是唯一一个建议awk的人。