
私はピッグラテン語計算機を作成しようとしていますが、ある部分で行き詰まっています。たとえば、「apple」という文字列があるとします。これを変換するには、単に末尾に「way」を追加して「appleway」にします。現在、この部分は完了しています。
私が行き詰まっているのは、「sports」のような文字列です。この場合、最初の母音の前の子音を取り、それを末尾に置き、「ay」を追加して「ortsspay」にします。
文字列を適切に変換するために、最初の母音の前に子音を取得する方法がわかりません。
答え1
bash
パラメータ拡張あり:
${var%%[AaEeIiOoUu]*}
- パターンは
[AaEeIiOoUu]*
貪欲に(%%
)変数から右から一致した部分を削除しますvar
。ここでは、大文字または小文字の母音([AaEeIiOoUu]
)から始まり、その後に任意のもの(*
)が続きます。
例:
$ var=sports
$ echo "${var%%[AaEeIiOoUu]*}"
sp
$ var=foobar
$ echo "${var%%[AaEeIiOoUu]*}"
f
答え2
$ echo "sports" | sed 's/.*\([a-z]\)[aeiouAEIOU].*/\1/'
p
ワイルドカードが多すぎます。
$ echo "spozzzzzzzzzo" | sed 's/\([a-z]\)[aeiouAEIOU].*/\1/'
sp
@Fiximan、それについてはよくわかりません。
$ echo "spozzzzzzzzzo" | sed 's/\(b-df-hj-np-tv-z\{1,\}\)[aeiou].*/\1/'
spozzzzzzzzzo
@Sundeep、はい、それはうまくいきました...
$ echo "spozzzzzzzzzo" | sed 's/\([^aeiou]*\).*/\1/i'
sp
私は heemayl のほうが好きだと言わざるを得ません。生のバッシュ +1、いいですね!