以前にこの質問を受けたことがある場合は申し訳ありません。しかし、これまで何も見つかりませんでした。
問題は次のとおりです。文字列とパターンがあり、文字列内のパターンを角かっこで囲みたいです。
大文字と小文字を区別するかどうかにかかわらず、パターンを囲みたいのですが、元の文字列と同じ大文字と小文字が必要です。
これはこれまで最高の試みです。
#!/bin/bash
STRING="ABCBD"
PATTERN="b"
echo $STRING | sed "s/$PATTERN/[$PATTERN]/Ig"
A[b]C[b]D
しかし、私はそれがA[B]C[B]D
。
モードB
でない場合は、b
出力も必要ですA[B]C[B]D
。
文字列でない場合、abcbd
出力ABCBD
はa[b]c[b]d
パターンB
またはでなければなりませんb
。
これを達成する方法を知っていますか?どんな助けでも受けたいです。
答え1
sed
あなたもこれを行うことができます。
echo $STRING | sed -e "s/\($PATTERN\)/[\1]/Ig"
答え2
Perlが気に入らない場合は、次のようになります。
echo $STRING | perl -pe "s/($PATTERN)/[\1]/ig"