어떤 리눅스 셸 명령이 문자열의 일부를 반환합니까?
문자열의 일부를 반환할 수 있는 리눅스 명령을 찾고 싶습니다.대부분의 프로그래밍 언어에서, 그것은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
'programing' 카테고리의 다른 글
셀 변경 시 Excel 매크로 자동 실행 (0) | 2023.05.26 |
---|---|
컴파일된 실행 파일에 DLL 포함 (0) | 2023.05.26 |
ono 명령을 사용하여 분기를 gitrebase하는 방법은 무엇입니까? (0) | 2023.05.26 |
C#에서 대용량 파일을 바이트 배열로 읽는 가장 좋은 방법은 무엇입니까? (0) | 2023.05.26 |
Node.js: 줄 바꿈 없이 콘솔로 인쇄하시겠습니까? (0) | 2023.05.26 |