
돼지 라틴어 계산기를 만들려고 하는데 특정 부분에서 멈췄습니다. "apple"이라는 문자열이 있다고 가정해 보겠습니다. 이를 변환하려면 끝에 "way"를 추가하면 "appleway"가 됩니다. 현재 이 부분을 완료했습니다.
내가 붙어있는 것은 "스포츠"라는 문자열과 같은 것입니다. 이를 위해 첫 번째 모음 앞에 자음을 가져다가 끝에 넣고 "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의 raw bash +1을 선호한다고 말해야합니다. 좋습니다!