この形式の文字列の場合:
./my-site.sub.domain.com
.
、-
およびを削除し、/
残りの部分を16文字に切りたいと思います。mysitesubdomainc
私はすでにこれをしました
mysite="./my-site.sub.domain.com"
mysite=${mysite//[\.|\/|-]//}
mysite=${mysite:0:16}
echo $mysite
mysitesubdomainc
置換と部分文字列抽出を組み合わせる方法はありますか?
ベストアンサー1
Bash内蔵を接続する方法はありませんパラメータ拡張ただし、もちろん、これは外部ツールを使用して1行で実行できますsed
。たとえば、次のようになります。
$ sed 's/[\.\/-]//g;s/^\(.\{16\}\).*/\1/' <<< "./my-site.sub.domain.com"
mysitesubdomainc
残念ながら、これはメンテナンスできないコードになり、Bash内部を使用するよりも効率が悪くなる可能性があるため、使用しないことをお勧めします。