마지막 구분 기호에서 문자열 자르기


14

같은 파일 이름 a.b.c.txt이 있습니다.이 문자열을

string1=a.b.c
string2=txt

기본적으로 파일 이름과 확장자를 나누고 싶습니다. 내가 사용 cut하지만로 분할 a,b,c하고 txt. 마지막 구분 기호에서 문자열을 자르고 싶습니다.

누군가 도울 수 있습니까?

답변:


25
 #For Filename
 echo "a.b.c.txt" | rev | cut -d"." -f2-  | rev
 #For extension
 echo "a.b.c.txt" | rev | cut -d"." -f1  | rev

코드의 아름다움!
Nam G VU

15

이를위한 많은 도구가 있습니다.

당신이 사용하는 동안 cut:

$ string1="$(cut -d. -f1-3 <<<'a.b.c.txt')"
$ string2="$(cut -d. -f4 <<<'a.b.c.txt')"
$ echo "$string1"
a.b.c
$ echo "$string2"
txt

셸에서 지원하는 경우 매개 변수 확장을 사용했을 것입니다.

$ name='a.b.c.txt'
$ string1="${name%.*}"
$ string2="${name##*.}"
$ echo "$string1"
a.b.c
$ echo "$string2"
txt

1
bash 솔루션은 우아합니다.
törzsmókus

한 기간의 고정 된 수 만 작업을 수행합니다!
törzsmókus

0
echo "a.b.c.txt" | cut -d. -f1-3

cut명령이 구분됩니다 .당신에게 4 개 요소를 줄 것이다 ( a, b, c, txt). 위의 명령은 요소 1 ~ 3 (포함)을 인쇄합니다.

또는:

echo "a.b.c.txt" | cut -d -f-3

위의 명령은 계수 1에서 3까지 (포함) 인쇄합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.