
Linux에 잘 갖춰진 것이 한 가지 있다면 문자열을 조작하기 위한 유틸리티입니다. 그러나 Bash 셸에 바로 내장된 전체 기능 세트도 있습니다. 사용 방법은 다음과 같습니다.
문자열 조작
Linux 에코시스템은 텍스트 및 문자열 작업을 위한 환상적인 도구로 가득 차 있습니다. 여기에는 awk, grep, sed 및 cut이 포함됩니다. 무거운 텍스트 랭글링의 경우 이것이 선택해야 합니다.
그러나 때때로, 특히 짧고 간단한 스크립트를 작성할 때 셸의 내장 기능을 사용하는 것이 편리합니다. 스크립트가 다른 사람들과 공유되고 그들의 컴퓨터에서 실행될 경우 표준 Bash 기능을 사용하면 다른 유틸리티의 존재 또는 버전에 대해 궁금해할 필요가 없습니다.
전용 유틸리티의 힘이 필요하면 반드시 사용하십시오. 그것이 그들이 거기에있는 이유입니다. 그러나 종종 스크립트와 Bash가 자체적으로 작업을 완료할 수 있습니다.
Bash에 내장되어 있기 때문에 스크립트나 명령줄에서 사용할 수 있습니다. 터미널 창에서 사용하는 것은 명령의 프로토타입을 만들고 구문을 완성하는 빠르고 편리한 방법입니다. 편집, 저장, 실행 및 디버그 주기를 피합니다.
문자열 변수 생성 및 작업
변수를 선언하고 문자열을 할당하기 위해 필요한 것은 변수의 이름을 지정하고 등호를 사용하는 것입니다. =, 문자열을 제공합니다. 문자열에 공백이 있으면 작은따옴표나 큰따옴표로 묶습니다. 등호 양쪽에 공백이 없는지 확인하십시오.
my_string="Hello, How-To Geek World."
echo $my_string

변수를 생성하면 해당 변수 이름이 셸의 탭 완성 단어 목록에 추가됩니다. 이 예에서 “my_”를 입력하고 “Tab” 키를 누르면 명령줄에 전체 이름이 입력됩니다.
읽기 전용 변수
이있다 declare 변수 선언에 사용할 수 있는 명령입니다. 간단한 경우에는 실제로 필요하지 않지만 이를 사용하면 명령의 일부 옵션을 사용할 수 있습니다. 아마 가장 많이 사용하게 될 -r (읽기 전용) 옵션. 이렇게 하면 변경할 수 없는 읽기 전용 변수가 생성됩니다.
declare -r read_only_var="This is an immutable string!"
새 값을 할당하려고 하면 실패합니다.
read_only_var="A new string..."

터미널 창에 쓰기
echo 또는 printf를 사용하여 터미널 창에 여러 문자열을 작성하여 하나의 문자열인 것처럼 표시할 수 있습니다. 그리고 우리는 우리 자신의 문자열 변수에 국한되지 않고 환경 변수를 명령에 통합할 수 있습니다.
user_account="Your user account is:"
echo $user_account $USER

문자열 연결
더하기 등호 연산자, +=, 두 개의 문자열을 함께 “추가”할 수 있습니다. 결합이라고 합니다.
user_account="Your user account is:"
user_account+=$USER
echo $user_account

연결된 문자열 사이에는 자동으로 공백이 추가되지 않습니다. 공백이 필요한 경우 첫 번째 문자열의 끝이나 두 번째 문자열의 시작 부분에 명시적으로 공백을 넣어야 합니다.
user_account="Your user account is: "
user_account+=$USER
echo $user_account

관련된: Linux의 Bash에서 환경 변수를 설정하는 방법
사용자 입력 읽기
내용이 선언의 일부로 정의된 문자열 변수를 생성할 뿐만 아니라 사용자 입력을 문자열 변수로 읽을 수 있습니다.
그만큼 read 명령은 사용자 입력을 읽습니다. 그만큼 -p (prompt) 옵션은 터미널 창에 프롬프트를 작성합니다. 사용자의 입력은 문자열 변수에 저장됩니다. 이 예에서 변수는 user_file.
read -p "Open which file? " user_file
echo $user_file

입력을 캡처하기 위해 문자열 변수를 제공하지 않으면 여전히 작동합니다. 사용자 입력은 이라는 변수에 저장됩니다. REPLY.
read -p "Open which file? "
echo $REPLY

일반적으로 고유한 변수를 제공하고 의미 있는 이름을 지정하는 것이 더 편리합니다.
문자열 조작
생성 시 정의된 문자열이든, 사용자 입력에서 읽든, 문자열을 연결하여 만든 문자열이든 관계없이 이제 문자열을 사용하여 작업을 시작할 수 있습니다.
문자열 길이 찾기
문자열의 길이를 아는 것이 중요하거나 유용한 경우 변수 이름 앞에 해시 “#“기호.
my_string="There are 39 characters in this string."
echo ${#my_string}

문자 오프셋으로 부분 문자열 추출하기
문자열 내의 시작점과 선택적 길이를 제공하여 문자열 변수에서 부분 문자열을 추출할 수 있습니다. 길이를 제공하지 않으면 하위 문자열에 시작 지점부터 마지막 문자까지의 모든 항목이 포함됩니다.
시작점과 길이는 변수 이름 뒤에 콜론 “:” 그들 사이에. 문자열 변수의 문자는 다음에서 시작하여 번호가 매겨집니다. 영.
long_string="Frankenstein or the Modern Prometheus"
substring=${long_string:0:12}
echo $substring
echo ${long_string:27}

또 다른 변형을 사용하면 문자열의 꼬리 끝에서 여러 글자를 버릴 수 있습니다. 효과적으로 시작점을 설정하고 음수를 길이로 사용할 수 있습니다. 하위 문자열에는 음수에 지정한 문자 수를 뺀 문자열의 시작점부터 끝까지의 문자가 포함됩니다.
my_string="alphabetical"
echo ${my_string:5:-4}

모든 경우에 원래 문자열 변수는 변경되지 않습니다. “추출된” 부분 문자열은 실제로 변수 내용에서 제거되지 않습니다.
구분 기호로 부분 문자열 추출
문자 오프셋을 사용할 때의 단점은 추출하려는 부분 문자열이 문자열 내 어디에 있는지 미리 알아야 한다는 것입니다.
문자열이 반복되는 문자로 구분되는 경우 문자열의 위치나 길이를 모른 채 부분 문자열을 추출할 수 있습니다.
문자열 앞에서 검색하려면 변수 이름 뒤에 이중 퍼센트 기호를 사용하고, %%구분 문자 및 별표, *. 이 문자열의 단어는 공백으로 구분됩니다.
long_string="first second third fourth fifth"
echo ${long_string%%' '*}

이것은 구분 문자를 포함하지 않는 문자열 앞의 첫 번째 부분 문자열을 반환합니다. 이것을 짧은 부분 문자열 옵션이라고 합니다.
긴 부분 문자열 옵션은 마지막으로 구분된 부분 문자열까지 문자열의 앞부분을 반환합니다. 즉, 마지막으로 구분된 하위 문자열을 생략합니다. 구문상 유일한 차이점은 단일 퍼센트 기호를 사용한다는 것입니다.%“명령에서.
long_string="first second third fourth fifth"
echo ${long_string%' '*}

예상대로 문자열 끝에서 동일한 방식으로 검색할 수 있습니다. 백분율 기호 대신 해시 “#” 기호를 입력하고 구분 기호를 앞으로 이동합니다. ~ 후에 별표 “*“명령에서.
long_string="this.long.string.of.words.is.delimited.by.periods"
echo ${long_string##*.}

이것은 짧은 부분 문자열 옵션으로, 구분 기호를 포함하지 않는 문자열의 뒤에서 찾은 첫 번째 부분 문자열을 잘라냅니다.
long_string="this.long.string.of.words.is.delimited.by.periods"
echo ${long_string#*.}

긴 부분 문자열 옵션은 문자열의 앞부분에서 첫 번째 구분 기호까지 문자열의 뒷부분을 반환합니다. 즉, 구분된 첫 번째 부분 문자열을 생략합니다.
부분 문자열 대체
하위 문자열을 다른 하위 문자열로 바꾸는 것은 쉽습니다. 형식은 문자열의 이름, 대체될 하위 문자열, 삽입될 하위 문자열이며 슬래시 “로 구분됩니다./” 문자.
string="blue pig giggles"
echo ${string/pig/goat}

검색을 문자열 끝으로 제한하려면 검색 문자열 앞에 퍼센트 기호 “% ” 캐릭터.
string="blue pig giggles"
echo ${string/%giggles/chuckles}

검색을 문자열의 시작 부분으로 제한하려면 검색 문자열 앞에 “#” 캐릭터.
string="blue pig giggles"
echo ${string/#blue/yellow}

문자열은 유연한 것입니다
문자열이 원하는 대로 또는 필요한 것이 아닌 경우 이러한 도구를 사용하여 필요에 맞게 다시 형식을 지정할 수 있습니다. 복잡한 변환의 경우 전용 유틸리티를 사용하지만 사소한 조정의 경우 셸 내장을 사용하고 외부 도구를 로드하고 실행하는 오버헤드를 방지합니다.
관련된: Linux의 inode에 대해 알고 싶었던 모든 것








