sedで遊んでたとき、GNU sedにスペース区切りの文字列の各文字間や、文字列の前後を指定するパターンがあるということを知ったので、備忘で残しておく。
GNU sedでは文字列の各文字列間は「\B
」、文字列の前後は「\b
」で指定できるので、これを利用すれば良い。
echo abcdefg hijklmn | sed 's/\B/X/g' # 文字列の各文字間
echo abcdefg hijklmn | sed 's/\b/X/g' # 文字列の前後
lacknon@BS-PUB-UBUNTU-01:~$ echo abcdefg hijklmn | sed 's/\B/X/g' # 文字列の各文字間
aXbXcXdXeXfXg hXiXjXkXlXmXn
blacknon@BS-PUB-UBUNTU-01:~$ echo abcdefg hijklmn | sed 's/\b/X/g' # 文字列の前後
XabcdefgX XhijklmnX
ちなみに、両方の条件で指定する場合は以下のようにする。
echo abcdefg hijklmn | sed -r 's/(\b|\B)/X/g' # 文字列の前後・各文字間
blacknon@BS-PUB-UBUNTU-01:~$ echo abcdefg hijklmn | sed -r 's/(\b|\B)/X/g' # 文字列の前後
XaXbXcXdXeXfXgX XhXiXjXkXlXmXnX