HOWTO · Bash

Bash에서 부분 문자열 추출

이 자습서에서는 cut 명령, 부분 문자열 확장 및 내부 필드 구분 기호를 사용하여 bash에서 부분 문자열을 추출하는 다양한 방법을 보여줍니다.

이 페이지의 내용

이 튜토리얼은 cut 명령, 하위 문자열 확장 및 내부 필드 구분 기호(IFS)를 사용하여 bash에서 하위 문자열을 추출하는 다양한 방법을 보여줍니다.

cut 명령을 사용하여 Bash에서 부분 문자열 추출

아래 스크립트는 cut 명령을 사용하여 부분 문자열을 추출합니다. -d 옵션은 문자열을 필드로 나누는 데 사용할 구분 기호를 지정하고 -f 옵션은 추출할 필드의 번호를 설정합니다.

우리의 경우 _를 구분 기호로 사용하여 문자열을 나누고 세 번째 필드에 액세스하기 위해 3 인수를 -f 옵션에 전달합니다.

#!/bin/bash

printf "Script to extract a substring!\n\n"

numbers='one_two_three_four_five'

printf "full string: $numbers\n"

substring=$(echo $numbers | cut -d '_' -f 3)
printf "substring: $substring\n"

다음과 같이 bash 스크립트를 실행합니다.

bash substring.sh

출력에서 one_two_three_four_five 문자열에서 하위 문자열 three가 추출되었습니다.

Script to extract a substring!

full string: one_two_three_four_five
substring: three

하위 문자열 확장을 사용하여 Bash에서 하위 문자열 추출

부분 문자열 확장은 기본 제공 bash 기능입니다. 다음 구문을 사용합니다.

$(variable:offset:length)

variable는 문자열을 포함하는 변수 이름입니다. offset은 문자열 추출을 시작할 위치를 지정하는 데 사용됩니다. length는 offset을 제외하고 추출할 문자의 범위를 지정하는 데 사용됩니다.

아래 스크립트는 변수 이름을 numbers로 설정하고 offset은 4로, 추출할 문자열의 length는 3으로 설정합니다.

#!/bin/bash

printf "Script to extract a substring!\n\n"

numbers='one_two_three_four_five'
substring=${numbers:4:3}

printf "full string: $numbers\n"
printf "substring: $substring\n"

다음과 같이 bash 스크립트를 실행합니다.

bash substring.sh

출력에서 one_two_three_four_five 문자열에서 하위 문자열 two가 추출되었습니다.

Script to extract a substring!

full string: one_two_three_four_five
substring: two

IFS를 사용하여 Bash에서 하위 문자열 추출

IFS는 내부 필드 구분 기호를 나타냅니다. IFS는 확장 후 단어 분할 및 내장된 읽기 명령으로 줄을 단어로 분할하는 데 사용됩니다.

아래 스크립트에서 IFS는 _로 설정되었습니다. 이는 _를 구분 기호로 사용하여 numbers 변수의 문자열을 분할해야 함을 의미합니다. 문자열이 분할되면 $[integer] 구문을 사용하여 단어에 액세스할 수 있습니다. 첫 번째 단어는 $1, 두 번째 단어는 $2, 세 번째 단어는 $3 등으로 액세스할 수 있습니다.

#!/bin/bash

printf "Script to extract a substring!\n\n"

numbers='one_two_three_four_five'
IFS="_"
set $numbers

printf "full string: $numbers\n"
printf "substring: $2\n"

다음과 같이 bash 스크립트를 실행합니다.

bash substring.sh

출력에서 one_two_three_four_five 문자열에서 하위 문자열 two가 추출되었습니다.

Script to extract a substring!

full string: one_two_three_four_five
substring: two