programing

Bash에서 문자열을 대문자에서 소문자로 변환하려면 어떻게 해야 합니까?

telebox 2023. 4. 22. 09:17
반응형

Bash에서 문자열을 대문자에서 소문자로 변환하려면 어떻게 해야 합니까?

문자열 값을 대문자에서 소문자로 변환하는 방법을 찾고 있습니다.모든 검색 결과에서 다음 명령어를 사용하는 방법을 보여 줍니다.tr명령어를 입력합니다.

에 관한 문제tr명령어를 echo 문과 함께 사용해야만 결과를 얻을 수 있습니다.예를 들어 다음과 같습니다.

y="HELLO"
echo $y| tr '[:upper:]' '[:lower:]'

위와 같이 작동하여 'hello'가 되지만 다음과 같이 결과를 변수에 할당해야 합니다.

y="HELLO"
val=$y| tr '[:upper:]' '[:lower:]'
string=$val world

위와 같이 값을 할당하면 빈 결과가 나옵니다.

PS: 제 Bash 버전은 3.1.17입니다.

Bash 4 를 사용하고 있는 경우는, 다음의 어프로치를 사용할 수 있습니다.

x="HELLO"
echo $x  # HELLO

y=${x,,}
echo $y  # hello

z=${y^^}
echo $z  # HELLO

1개만 사용,또는^첫 글자를 쓰다lowercase또는uppercase.

코드를 구현하는 한 가지 방법은

y="HELLO"
val=$(echo "$y" | tr '[:upper:]' '[:lower:]')
string="$val world"

이 방법에서는$(...)변수에서 명령어의 출력을 캡처하기 위한 표기법입니다.또, 그 주위의 따옴표도 주의해 주세요.stringvariable -- 이 명령어가 필요합니다.$val그리고.world할당해야 할 단일 사항입니다.string.

Bash 4.0 이후를 사용하고 있는 경우, 보다 효율적이고 우아한 방법은 Bash 삽입 문자열 조작을 사용하는 것입니다.

y="HELLO"
string="${y,,} world"

주의:tr일반 ASCII만 처리할 수 있습니다.tr-기반솔루션은국제적인캐릭터에대해서실패합니다.

Bash 4 기반도 마찬가지입니다.${x,,}솔루션.

한편, AWK 툴은 UTF-8/멀티바이트 입력도 적절히 지원합니다.

y="HELLO"
val=$(echo "$y" | awk '{print tolower($0)}')
string="$val world"

liborw의 예의를 갖춰 답변합니다.

백틱으로 실행:

 x=`echo "$y" | tr '[:upper:]' '[:lower:]'` 

그러면 backticks 명령어 결과가 변수에 할당됩니다.x(즉, 특별한 것은 아닙니다)tr단, 셸 스크립팅의 일반적인 패턴/패턴입니다).

사용할 수 있습니다.$(..)백틱이 아니라요.자세한 내용은 여기를 참조해 주세요.

Ubuntu 14.04(Trusty Tahr)의 Bash 버전 4.3.11을 사용하고 있습니다.하지만 저는 아직 재미있는 내장 스트링 조작이 없습니다.${y,,}

대문자화를 강제하기 위해 스크립트에서 사용한 것은 다음과 같습니다.

CAPITALIZED=`echo "${y}" | tr '[a-z]' '[A-Z]'`

선언(old: typeset)을 사용하여 변수를 정의하는 경우 변수 사용 내내 값의 대/소문자를 지정할 수 있습니다.

declare -u FOO=AbCxxx
echo $FOO

출력:

ABCXXX

선택-ldoes 소문자임을 선언합니다.

변수에 값을 할당하면 모든 대문자가 소문자로 변환됩니다.대문자의 아트리뷰트는 디세이블입니다.

로디의 대답에 힘입어, 이것은 나에게 효과가 있었다.

y="HELLO"
val=$(echo $y | tr '[:upper:]' '[:lower:]')
string="$val world"

작은 수정 사항: 변수 옆에 밑줄을 사용하는 경우 {}에서 변수 이름을 캡슐화해야 합니다.

string="${val}_world"

언급URL : https://stackoverflow.com/questions/11392189/how-can-i-convert-a-string-from-uppercase-to-lowercase-in-bash

반응형