正規表現
レス数が1000を超えています。これ以上書き込みはできません。
bashで半角スペースの繰り返しを半角スペース1つに変換する正規表現で困っています。
ちなみに、sedなら何も問題なくできます。でもsedはプログラムを起動する分遅くなります。
bashの場合、次のように書くと、不完全ながらも空白スペースを縮めることはできました
"${str// [ \{1\,\}]/ }"
こいつを何回か繰り返すと連続スペースを1スペースにできるのですが、あまりに不細工すぎて、
何かまともな書き方はないでしょうか?
下のRep2Oneはbashで動作する、
str中、2回以上chrが連賊する箇所を1回に縮める関数です。
function Rep2One(){
local str=$1
local chr=$2
while :
do
str="${str//$chr$chr/$chr}"
# echo "str = $str"
if [[ ! $str =~ $chr$chr ]]; then
break
fi
done
echo "$str"
} シェルスクリプトのスレで聞いた方が良案が出やすいんじゃないの
と思うけど str="${str//$chr$chr$chr$chr$chr/$chr}"
1回目で大量に消せば高速 このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 5942日 11時間 17分 40秒 レス数が1000を超えています。これ以上書き込みはできません。