Text 如何删除在任何位置重复N次以上的字母行?

Text 如何删除在任何位置重复N次以上的字母行?,text,awk,sed,line,Text,Awk,Sed,Line,有什么方法可以保留或删除包含在任何位置重复N次以上字母的行? 我需要删除X或Y在任何位置重复4次及以上的行。例如: XAABCCC XABXXBA BCXXXCX AXXXXCA 输出应为: XAABCCC XABXXBA 在互联网上搜索SED或AWK使用和阅读教程对我没有帮助。提前感谢。使用grep: ~$ grep -Ev "(X.*){4,}" myfile XAABCCC XABXXBA 您搜索X,可能在之后搜索了4次。-v否定匹配 使用grep: ~$ grep -Ev "(X.

有什么方法可以保留或删除包含在任何位置重复N次以上字母的行? 我需要删除X或Y在任何位置重复4次及以上的行。例如:

XAABCCC
XABXXBA
BCXXXCX
AXXXXCA
输出应为:

XAABCCC
XABXXBA
在互联网上搜索SED或AWK使用和阅读教程对我没有帮助。提前感谢。

使用grep:

~$ grep -Ev "(X.*){4,}" myfile
XAABCCC
XABXXBA
您搜索
X
,可能在之后搜索了4次。
-v
否定匹配

使用grep:

~$ grep -Ev "(X.*){4,}" myfile
XAABCCC
XABXXBA
您搜索
X
,可能在之后搜索了4次。
-v
否定匹配

类似于

$ sed '/\(X.*\)\{4\}/d' input
XAABCCC
XABXXBA

$ awk '/(X.*){4}/' input
BCXXXCX
AXXXXCA
差不多

$ sed '/\(X.*\)\{4\}/d' input
XAABCCC
XABXXBA

$ awk '/(X.*){4}/' input
BCXXXCX
AXXXXCA

对于任意字符,而不仅仅是X:

grep -Ev "(.)(.*\1){3,}" input
仅适用于大写字母:

grep -Ev "([A-Z])(.*\1){3,}" input

对于任意字符,而不仅仅是X:

grep -Ev "(.)(.*\1){3,}" input
仅适用于大写字母:

grep -Ev "([A-Z])(.*\1){3,}" input

下面是一个使用
sed
的替代方案:

sed -n 'h;s/[^X]//g;/XXXX/{x;p}' file
说明:

h-将当前行放入保持缓冲区
s/[^X]//g-替换所有非X字符。。。
/XXXX/{x;p}-。。。并检查线是否容纳4个或更多X
如果是,则从中获取原始行
按住缓冲区->x并打印行->p

这里有一个使用
sed的替代方案:

sed -n 'h;s/[^X]//g;/XXXX/{x;p}' file
说明:

h-将当前行放入保持缓冲区
s/[^X]//g-替换所有非X字符。。。
/XXXX/{x;p}-。。。并检查线是否容纳4个或更多X
如果是,则从中获取原始行
按住缓冲区->x并打印行->p

这可能是您想要的:

$ cat file
XAABCCC
XABXXBA
BCXXXCX
AXXXXCA
BCXYXCY
BCYYYCY
XCYXYCY

$ awk 'gsub(/[XY]/,"&")>=4' file
BCXXXCX
AXXXXCA
BCXYXCY
BCYYYCY
XCYXYCY

如果没有,请编辑您的问题以澄清。

这可能是您想要的:

$ cat file
XAABCCC
XABXXBA
BCXXXCX
AXXXXCA
BCXYXCY
BCYYYCY
XCYXYCY

$ awk 'gsub(/[XY]/,"&")>=4' file
BCXXXCX
AXXXXCA
BCXYXCY
BCYYYCY
XCYXYCY
如果没有,请编辑您的问题以澄清。

这可能适合您(GNU sed):

如果您可以自己替换4个
X
,则删除该行

N.B.与
t
命令相反,该命令在成功的替换分支上执行。这里,
T
在打印行的不成功替换中退出。

这可能适合您(GNU-sed):

如果您可以自己替换4个
X
,则删除该行


N.B.与
t
命令相反,该命令在成功的替换分支上执行。在这里,
T
放弃了一个不成功的替换,它打印了这行。

你的问题和例子不清楚。你的意思是1)包含4个X或4个Y的行,还是2)包含4个X或Y的行,还是3)其他什么?更新了示例输入/输出,以包含一行4个Y和一行2个X和2个Y。我的意思是2)行包含4个X-or-Y。您的问题和示例不清楚。你的意思是1)包含4个X或4个Y的行,还是2)包含4个X或Y的行,还是3)其他什么?更新了您的示例输入/输出,以包含一行4个Y以及一行2个X和2个Y。我的意思是2)行包含4个X或Y。