テキストファイルがあり、1文字が連続して複数回繰り返されるすべての行を印刷したいと思います。たとえば、次のように入力します。
11
AAA
555227777
BBhh@@222
baabbb
1112
212211
baa
22333445
322113
出力は次のようになります。
11
AAA
555227777
BBhh@@222
この4行には連続して繰り返される文字のみが含まれているため、出力には4行だけが含まれます。
私はこのコードを試しました
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
1つの方法はGnu sedを使用することです。
sed -Ee '/^((.)\2+)+$/!d' input.txt