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
다른 경우에는 마지막 경우도 도움이 될 수 있습니다. 마지막 출력의 시작 부분에 “/”가 없다는 점에 유의하십시오.
답변
“:”의 마지막 인스턴스 이후에 모든 것을 다듬습니다.
cat fileListingPathsAndFiles.txt | grep -o '^.*:'
마지막 “:”을 삭제하려면
cat file.txt | grep -o '^.*:' | sed 's/:$//'
@ kp123 : 교체 할 것 :
으로 /
합니다 (나오지도 콜론이 있어야 할 곳에 \/
)