programing

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

mailnote 2023. 5. 26. 22:08
반응형

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

문자열의 일부를 반환할 수 있는 리눅스 명령을 찾고 싶습니다.대부분의 프로그래밍 언어에서, 그것은substr()기능.bash에는 이 용도로 사용할 수 있는 명령어가 있습니까?이런 일을 할 수 있었으면 좋겠어요 substr "abcdefg" 2 3인쇄물cde.


후속 유사 질문:

만약 당신이 그런 것을 하기 위해 셸 유틸리티를 찾고 있다면, 당신은 사용할 수 있습니다.cut지휘권

예를 들어, 다음을 시도합니다.

echo "abcdefg" | cut -c3-5

어느 쪽이 산출하는지

cde

어디에-cN-M절단 명령에 열을 반환하도록 지시합니다.N로.M포괄적인

bash man 페이지에서:

${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}

인덱스 하위 문자열 확장(음의 간격띄우기를 사용하는 특수 동작 및 최신 Bash에서는 음의 길이):

${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 설명서 프로젝트의 더 많은 샘플

${string:position:length}

expr(1)에는 다음과 같은 하위 명령어:

expr substr <string> <start-index> <length>

이것은 bash(아마도 임베디드 리눅스)가 없고 cut(1)을 사용하는 데 필요한 추가 "echo" 프로세스를 원하지 않을 때 유용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/219402/what-linux-shell-command-returns-a-part-of-a-string

반응형