HOWTO · Bash

Bash의 문자열에서 첫 번째 문자 제거

이 기사는 독자들에게 Bash 프로그래밍 언어를 사용하여 문자열의 첫 번째 문자를 제거하는 방법을 보여줍니다.

이 페이지의 내용

Bash 매개변수 확장을 사용하면 변수에서 첫 문자를 제거할 수 있습니다. ${my_string:1}은 오프셋 1부터 시작하는 부분 문자열을 가져옵니다. 예를 들어 Hello에 적용하면 ello가 됩니다. Bash에는 문자열에서 문자를 제거하는 전용 함수가 없지만, 이 기본 표현식으로 외부 명령 없이 작업할 수 있습니다. 텍스트 줄을 처리할 때는 sed나 cut을 사용할 수도 있습니다.

sed 명령으로 첫 번째 문자 제거

sed 치환식 s/^.//은 입력된 각 줄의 첫 문자를 제거합니다. 패턴에서 ^는 줄의 시작을 나타내고 .은 문자 하나와 일치합니다. 줄 단위 입력을 처리할 때 유용하며, 여러 줄로 된 값을 하나의 문자열로 취급하지는 않습니다.

다음 예제를 실행해 보세요. 예제 출력의 “The modified string is:” 레이블은 변경되지 않아 영어로 표시됩니다.

my_string="Welcome"
new_string=$(printf '%s\n' "$my_string" | sed 's/^.//')
printf 'The modified string is: %s\n' "$new_string"
The modified string is: elcome

명령 치환은 명령 출력의 끝에 있는 개행 문자를 제거합니다. 결과를 저장할 때 줄 경계나 끝의 개행 문자를 보존해야 한다면 이 동작을 고려하세요.

cut 명령으로 첫 번째 문자 제거

cut -c 2- 옵션은 각 줄에서 두 번째 문자부터 끝까지의 문자 위치를 선택합니다. 따라서 여러 줄로 된 값을 하나의 문자열처럼 자르는 대신 각 줄의 첫 문자를 제거합니다. 입력이 줄 단위로 처리되어도 괜찮다면 이 방법을 사용하세요. 여기서 문자 위치는 바이트 오프셋이 아니므로, 이 명령은 임의의 바이너리 데이터가 아닌 일반 텍스트를 대상으로 합니다. cut은 표준 입력을 읽으므로, 텍스트가 한 줄씩 들어오는 파이프라인에도 적합합니다.

한 줄의 경우 결과를 변수에 저장한 뒤 출력하면 됩니다. 이 예제는 값에 cut을 실행하고 그 결과를 저장합니다. 예제 출력의 “The modified string is:” 레이블은 변경되지 않아 영어로 표시됩니다.

my_string="Hello"
new_string=$(printf '%s\n' "$my_string" | cut -c 2-)
printf 'The modified string is: %s\n' "$new_string"
The modified string is: ello

sed 예제와 마찬가지로 명령 치환은 저장된 출력의 끝에 있는 개행 문자를 제거합니다. cut은 Bash에 내장된 명령이 아니므로, 입력 줄에서 문자 위치를 선택해야 하는 경우에 적합합니다.

Bash 매개변수 확장으로 첫 번째 문자 제거

값이 이미 Bash 변수에 저장되어 있다면 Bash 매개변수 확장이 간결한 선택입니다. ${my_string:1} 표현식은 0부터 세는 오프셋 1부터 끝까지의 부분 문자열을 가져옵니다. 첫 문자의 오프셋은 0입니다. 이 표현식은 sed나 cut을 실행하지 않습니다.

Bash 변수로 다음 예제를 실행해 보세요. 예제 출력의 “The modified string is:” 레이블은 변경되지 않아 영어로 표시됩니다.

my_string="Hello"
new_string=${my_string:1}
printf 'The modified string is: %s\n' "$new_string"
The modified string is: ello

값이 비어 있거나 문자가 하나뿐이면 ${my_string:1}은 빈 문자열을 반환합니다. 이 표현식은 변수 값에 직접 적용되므로 명령 치환과 달리 끝의 개행 문자를 제거하지 않습니다. 변수가 이미 준비되어 있다면 Bash 안에서 처리할 수 있고, 나중에 앞부분의 문자를 더 제거해야 할 때 오프셋을 쉽게 조정할 수 있습니다. Bash 변수에는 매개변수 확장을 사용하고, 각 입력 줄을 변환하려면 sed나 cut을 사용하세요. 요약하면 입력 형태에 맞는 도구를 선택하면 됩니다. 변수 하나에는 기본 표현식을, 레코드 스트림에는 줄 단위 명령을 사용하세요.