potong string pada pembatas terakhir


14

Saya memiliki nama file seperti a.b.c.txt, saya ingin string ini dipecah menjadi

string1=a.b.c
string2=txt

Pada dasarnya saya ingin membagi nama file dan ekstensinya. Saya menggunakan cuttetapi terbagi menjadi a,b,cdan txt. Saya ingin memotong string pada pembatas terakhir.

Adakah yang bisa membantu?

Jawaban:


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

Keindahan kode!
Nam G VU

15

Ada banyak alat untuk melakukan ini.

Saat Anda menggunakan 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

Saya akan menggunakan ekspansi parameter (jika shell mendukungnya):

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

1
solusi bash elegan.
törzsmókus

yang dipotong hanya bekerja dengan jumlah periode yang tetap!
törzsmókus

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

cutperintah akan membatasi .dan akan memberikan 4 faktor ( a, b, c, txt). Perintah di atas akan mencetak faktor 1 hingga 3 (termasuk).

Atau:

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

Perintah di atas akan mencetak faktor 1 hingga 3 (termasuk).

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.