🌞
Linux, shell 同字が2回以上繰返(連続)した文字列を含む行をgrep
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