別のパイプ処理されたbash文字列操作の質問について読みましたが、これはアプリケーションによって異なります。
本質的に、以下を簡単にする方法はありますか?
変える
$ string='hello world'; string2="${string// /_}"; echo "${string2^^}"
HELLO_WORLD
それはまるで
$ echo 'hello world' | $"{-// /_}" | "${ -^^}"
HELLO_WORLD
編集可能な場合は、速度を維持するためにbash操作を維持することに興味があります(スクリプトの速度を大幅に低下させる傾向があるsed / awkの代わりに)。
編集2:@jimmij
私は2番目の例が好きです。これで関数を作成しました。
bash_m() { { read x; echo "${x// /_}"; } | { read x; echo "${x^^}"; }; }
echo hello world | bash_m
HELLO_WORLD
ベストアンサー1
ジミーが言ったこと。彼の最後の例は、パイプ式で試しているものに最も近いものです。
以下はテーマのバリエーションです。
echo 'hello world'|echo $(read s;s=${s^^};echo ${s// /_})
tr
かなり速いのでこれを使う傾向があります。
echo 'hello world'|tr ' [:lower:]' '_[:upper:]'
bashがネストされたパラメータ拡張を許可しないのは残念です。これらの入れ子になった式を使用すると、読みやすくないコードが発生する可能性があります。そうでなければ本物できるだけ早く実行する必要がある場合はスマートに見えますが、デバッグが必要なPITAコードを書くよりも読みやすく理解しメンテナンスしやすいコードを書くことをお勧めします。もしあなたが本当にするできるだけ早く作業を完了し、コンパイルされたコードを使用する必要があります。いいえスクリプト。