perlワンライナーで先読み・後読み正規表現を使って行頭・行末以外を置換する

シェル芸で遊んでいた際、行頭と行末以外を置換したいといった事があったので、備忘として残しておく。
置換処理というとまっさきにsedの利用を思いつくのだが、残念ながらsedで行頭・行末の文字以外を指定する方法が思いつかず、Perlの先読み・後読み正規表現を使って置換することにした。

echo あいうえお | perl -C -pe 'use utf8;s/((?<!^).(?!$))/_/g'
Sponsored Links

blacknon@BS-PUB-UBUNTU-01:~$ echo あいうえお | perl -C -pe 'use utf8;s/((?<!^).(?!$))/_/g'
あ___お
blacknon@BS-PUB-UBUNTU-01:~$
blacknon@BS-PUB-UBUNTU-01:~$ # 指定した行だけに処理をする場合(1行目以外など)
blacknon@BS-PUB-UBUNTU-01:~$ yes あいうえお | head -5 | perl -C -pe 'use utf8;s/((?<!^).(?!$))/_/g if 2..n'
あいうえお
あ___お
あ___お
あ___お
あ___お
blacknon@BS-PUB-UBUNTU-01:~$ yes あいうえお | head -5 | perl -C -pe 'use utf8;s/((?<!^).(?!$))/_/g if 2..3'
あいうえお
あ___お
あ___お
あいうえお
あいうえお

 


Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

メールアドレスが公開されることはありません。

*