🌞

Linux, shell 同字が2回以上繰返(連続)した文字列を含む行をgrep

2024/08/11に公開

Linux, shell 同字が2回以上繰返(連続)した文字列を含む行をgrep

2024-08-11


(1).何がしたかったか

  • textファイル(文献)の中で、繰返して(連続して)使用されている「字」をgrepしたかった。
桃之夭夭 灼灼其華
之子于歸 宜其室家

このような羅列が6000行もあり、繰返して(連続して)使用されている「字」を知りたかった。この例なら「夭夭」「灼灼」


(2).結論

  • できた。
    • grep でいける
    • sed でもいける

(3).環境

  • Ubuntu 22.04
  • GNU grep 3.7
  • GNU sed 4.8

(4).grepで行マッチ

$ grep -E '(.)\1{1,}'

できた。繰り返しが2文字以上。
繰返しが3文字以上にマッチなら、

$ grep -E '(.)\1{2,}'

だね。


(5).sedでもいけるのかも

grep でできるなら sed ででけるのではないか?

$ sed -r -e 's@(.)\1{1,}@\n> \1\n@g'

 ︙
> 字
 ︙

繰返し部分を
改行 > 字 改行
に変更。いけた。
加工しやすいパターンにすれば、抽出しやすくなる。

幸せだ。

sed オプションの順番注意

OK : sed -r -e
OK : sed -re
BAD: sed -er
BAD: sed -e -r

(6).他

grepもsedも色々できるね〜


以上

Discussion