developer tip

어떤 리눅스 쉘 명령이 문자열의 일부를 반환합니까?

copycodes 2020. 9. 6. 10:12
반응형

어떤 리눅스 쉘 명령이 문자열의 일부를 반환합니까? [복제]


이 질문에 이미 답변이 있습니다.

문자열의 일부를 반환 할 수있는 Linux 명령을 찾고 싶습니다. 대부분의 프로그래밍 언어에서 그것은 substr()기능입니다. bash에는 이러한 목적으로 사용할 수있는 명령이 있습니까? 나는 ... 같은 것을 할 수 있도록하려면 substr "abcdefg" 2 3인쇄 - cde.


후속 유사한 질문 :


이와 같은 작업을 수행하는 쉘 유틸리티를 찾고 있다면 cut명령을 사용할 수 있습니다 .

예를 들어 보려면 다음을 시도하십시오.

echo "abcdefg" | cut -c3-5

어느 양보

cde

어디에 -cN-MN반환하도록 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

반응형