文字列から色付けコードを削除しようとしています。例: から:\033[36;1mDISK\033[0m
へ:DISK
私の正規表現は次のようになります: \033.*?m
'\033' の後に任意の数の文字が続き、'm' で終了します
パターンを検索すると、一致が見つかります。true[[ "$var" =~ $regex ]]
と評価される
ただし、一致を置き換えようとすると、何も起こらず、同じ文字列が返されます。
これが私の完全なスクリプトです:
regex="\033.*?m"
var="\033[36;1mDISK\033[0m"
if [[ "$var" =~ $regex ]]
then
echo "matches"
echo ${var//$regex}
else
echo "doesn't match!"
fi
問題は、正規表現の任意の文字部分の任意の数に一致しているようです。正常に置き換えることDISK
ができますが、それを変更するD.*K
かD.*?K
、失敗すると失敗します。
上記のすべてのケースで、パターンは文字列に一致すると主張していますが、置換時に失敗することに注意してください。これでどこに行けばいいのかわからないので、助けていただければ幸いです。
ありがとう