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?

chhaya vishwakarma
sumber

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
7171u
sumber
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
heemayl
sumber
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).

Rohit Chaudhari
sumber