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