シェルスクリプト総合 その29at TECHシェルスクリプト総合 その29 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト4:デフォルトの名無しさん 18/08/25 20:12:10.01 tfF8aOe1.net >>1 前スレまだ200番台なんですが… 5:デフォルトの名無しさん 18/09/15 20:48:25.04 iaCHT03n.net 次スレの29はワッチョイ有りにするのでこのスレは利用禁止で 6:デフォルトの名無しさん 18/12/23 08:00:40.84 W0WvAA71.net sedだと簡単に動く一文字以上の半角スペースを一文字スペースに置換するコレ echo "$strings" | sed -E 's/ {1,}/ /g' bashだとどーしてもうまく動かず次のように[]で囲ってやるとなんとか全連続スペースじゃなく一部 だけが置換できた。 ${strings// [ \{1,\}]/ } それ以上どうしようもなかったので、次のような関数を作った function Rep2One(){ local str=$1 local chr=$2 while : do str="${str//$chr$chr/$chr}" if [[ ! $str =~ $chr$chr ]]; then break fi done echo "$str" } srings=`Rep2One "$strings" " "` これで任意の2文字以上の連続を1文字に置換できたが、 sedみたいに一発でかっこよく記述できない? 至る所でbashからsedやgrep起動してたんだが、 bashのなかでできることはbashだけでやった方が大分速いことがわかったんで なんとかbashの正規表現だけでやりたい 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch