연속적으로 반복되는 문자가 모두 포함된 행만 인쇄

연속적으로 반복되는 문자가 모두 포함된 행만 인쇄

텍스트 파일이 있는데 한 문자가 연속해서 두 번 이상 반복되는 모든 줄을 인쇄하고 싶습니다. 예를 들어 다음을 입력합니다.

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

 출력은 다음과 같아야 합니다.

11
AAA 
555227777
BBhh@@222

 이 네 줄에는 연속적으로 반복되는 문자만 포함되어 있으므로 출력에는 이 네 줄만 포함됩니다.

나는 이 코드를 시도했다

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

그러나 그것은 정확하게 작동하지 않습니다.

답변1

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

댓글이 있습니다

sed -E -n '
    h            # store a copy of the line
    :a           # set label "a"
    s/^(.)\1+//  # 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

답변2

한 가지 방법은 Gnu sed를 사용하는 것입니다.

sed -Ee '/^((.)\2+)+$/!d'  input.txt

관련 정보