반응형
bash에서 문자 다음에 모든 텍스트를 제거하려면 어떻게합니까?
bash에서 문자 다음에 콜론 ( ":") 뒤에있는 모든 텍스트를 제거하려면 어떻게해야합니까? 콜론도 제거 할 수 있습니까? 나는 방법을 모른다.
예제가 유용했을 수도 있지만, 올바르게 이해하면 다음과 같이 작동합니다.
echo "Hello: world" | cut -f1 -d":"
"hello : world"를 "hello"로 변환합니다.
Bash (및 ksh, zsh, dash 등) %
에서 문자열의 끝에서 #
문자를 제거 하거나 문자열 의 시작에서 문자를 제거 하는 매개 변수 확장을 사용할 수 있습니다 . 해당 문자 중 하나를 사용하면 일치하는 가장 작은 문자열이 제거됩니다. 문자를 두 배로 늘리면 가장 긴 문자가 제거됩니다.
$ a='hello:world'
$ b=${a%:*}
$ echo "$b"
hello
$ a='hello:world:of:tomorrow'
$ echo "${a%:*}"
hello:world:of
$ echo "${a%%:*}"
hello
$ echo "${a#*:}"
world:of:tomorrow
$ echo "${a##*:}"
tomorrow
$ echo 'hello:world:again' |sed 's/:.*//'
hello
egrep -o '^[^:]*:'
이 형식의 파일 경로가 있다고 가정 해 봅시다.
/dirA/dirB/dirC/filename.file
이제 네 개의 "/"를 포함하는 경로 만 원합니다. 유형
$ echo "/dirA/dirB/dirC/filename.file" | cut -f1-4 -d"/"
그리고 당신의 출력은
/dirA/dirB/dirC
cut을 사용하면 파일뿐만 아니라 uppest 디렉토리도 잘라낼 수 있다는 장점이 있습니다.
$ echo "/dirA/dirB/dirC/filename.file" | cut -f1-3 -d"/"
당신의 출력은
/dirA/dirB
문자열의 다른 쪽에서도 똑같이 할 수 있지만이 경우에는 입력하는 것이별로 의미가 없습니다.
$ echo "/dirA/dirB/dirC/filename.file" | cut -f2-4 -d"/"
결과
dirA/dirB/dirC
다른 경우에는 마지막 경우도 도움이 될 수 있습니다. 마지막 출력의 시작 부분에 "/"가 없다는 것을 명심하십시오.
참고 URL : https://stackoverflow.com/questions/4168371/how-can-i-remove-all-text-after-a-character-in-bash
반응형
'programing tip' 카테고리의 다른 글
사례 문 전환 오류 : 사례 표현식은 상수 표현식이어야합니다. (0) | 2020.07.09 |
---|---|
Mac OS X에서 정적 라이브러리 (.a)의 대상 아키텍처를 어떻게 확인합니까? (0) | 2020.07.09 |
리사이클 러보기 및 다양한 유형의 행 인플레이션 처리 (0) | 2020.07.09 |
CSS를 사용하여 빈 입력 상자 일치 (0) | 2020.07.09 |
JavaScript를 사용하여 문자열을 기반으로 16 진수 색상 만들기 (0) | 2020.07.09 |