어떤 리눅스 쉘 명령이 문자열의 일부를 반환합니까? [복제]
이 질문에 이미 답변이 있습니다.
- Bash 20 답변 에서 부분 문자열 추출
문자열의 일부를 반환 할 수있는 Linux 명령을 찾고 싶습니다. 대부분의 프로그래밍 언어에서 그것은 substr()
기능입니다. bash에는 이러한 목적으로 사용할 수있는 명령이 있습니까? 나는 ... 같은 것을 할 수 있도록하려면 substr "abcdefg" 2 3
인쇄 - cde
.
후속 유사한 질문 :
이와 같은 작업을 수행하는 쉘 유틸리티를 찾고 있다면 cut
명령을 사용할 수 있습니다 .
예를 들어 보려면 다음을 시도하십시오.
echo "abcdefg" | cut -c3-5
어느 양보
cde
어디에 -cN-M
열 N
을 반환하도록 cut 명령에 지시 M
합니다.
bash 맨 페이지에서 :
${parameter:offset}
${parameter:offset:length}
Substring Expansion. Expands to up to length characters of
parameter starting at the character specified by offset.
[...]
또는을 가지고 있는지 확실하지 않은 경우을 bash
사용하는 것이 cut
좋습니다.
"순수한"bash에는 주로 (하위) 문자열 조작을위한 많은 도구가 있지만 매개 변수 확장 에만 국한되지는 않습니다 .
${parameter//substring/replacement}
${parameter##remove_matching_prefix}
${parameter%%remove_matching_suffix}
인덱싱 된 하위 문자열 확장 (음수 오프셋이있는 특수 동작 및 최신 Bashe에서는 음수 길이) :
${parameter:offset}
${parameter:offset:length}
${parameter:offset:length}
물론 매개 변수가 null인지 여부에 따라 작동하는 매우 유용한 확장입니다.
${parameter:+use this if param is NOT null}
${parameter:-use this if param is null}
${parameter:=use this and assign to param if param is null}
${parameter:?show this error if param is null}
그들은 나열된 것보다 더 많은 조정 가능한 동작을 가지고 있으며 내가 말했듯이 문자열을 조작하는 다른 방법이 있습니다 (일반적인 것은 $(command substitution)
sed 또는 다른 외부 필터와 결합 됨). 하지만 타이핑 man bash
을 하면 쉽게 찾을 수있어서이 게시물을 더 확장 할 가치가 없다고 생각합니다.
bash에서는 다음을 시도 할 수 있습니다.
stringZ=abcABC123ABCabc
# 0123456789.....
# 0-based indexing.
echo ${stringZ:0:2} # prints ab
Linux 문서 프로젝트의 추가 샘플
expr(1)
substr 부속 명령이 있습니다.
expr substr <string> <start-index> <length>
이는 bash (아마도 임베디드 Linux)가없고 cut (1)을 사용하는 데 필요한 추가 "echo"프로세스를 원하지 않는 경우 유용 할 수 있습니다.
${string:position:length}
참고 URL : https://stackoverflow.com/questions/219402/what-linux-shell-command-returns-a-part-of-a-string
'developer tip' 카테고리의 다른 글
덮어 쓰지 않고 파일 복사 (0) | 2020.09.06 |
---|---|
UIButton이 콘텐츠 모드 설정을 수신하지 않습니까? (0) | 2020.09.06 |
PHP에서 sqlite3를 활성화하는 방법은 무엇입니까? (0) | 2020.09.06 |
Azure에서 'Microsoft.SqlServer.Types'버전 10 이상을 찾을 수 없습니다. (0) | 2020.09.06 |
c # linq orderby 숫자는 문자열이며 int로 변환 할 수 없습니다. (0) | 2020.09.06 |