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
'programing' 카테고리의 다른 글
| 텍스트 블록에서 줄 간격을 변경하는 방법 (0) | 2023.04.27 |
|---|---|
| 엑셀에 있는 행들만 필터링되지 않는 하나의 합은 어떻게 됩니까? (0) | 2023.04.27 |
| 폼 인증Sign Out()은 사용자를 로그아웃하지 않습니다. (0) | 2023.04.22 |
| Azure의 Asp.Net Core 2.0은 502.5가 됩니다. (0) | 2023.04.22 |
| openpyxl에서 시트 이름 가져오기 (0) | 2023.04.22 |