Imprime as linhas que somente com todos os caracteres repetidos consecutivos

0

Eu tenho um arquivo de texto e quero imprimir apenas as linhas que têm todos os seus caracteres são consecutivamente reaquecidos pelo menos duas vezes ou mais. POR EXEMPLO A ENTRADA:

11
AAA
555227777
BBhh@@222
baabbb
1112
212211
baa
22333445
322113

A saída deve ser:

11
AAA 
555227777
BBhh@@222

A saída contém apenas essas quatro linhas porque elas têm apenas caracteres duplicados consecutivamente em ordem.

Eu tentei este código

grep '\(^\| \)\([   ])\($\| \)' INFILE

Mas não está funcionando exatamente.

    
por Ahmed 18.10.2018 / 18:53

2 respostas

3
 sed -En 'h;:a;s/^(.)+//;ta;/^$/{x;p}' file

com comentário

sed -E -n '
    h            # store a copy of the line
    :a           # set label "a"
    s/^(.)+//  # from the start of the line, remove sequences of 2 or more repeated chars
    ta           # *if the pattern matched* jump to "a"
    /^$/ {       # if empty string:
        x        #   retrieve the original line
        p        #   and print it
    }
' file
    
por 18.10.2018 / 19:29
2

Uma maneira, usando o Gnu sed, pode ser:

sed -Ee '/^((.)+)+$/!d'  input.txt
    
por 18.10.2018 / 21:07