son sınırlayıcıda dize kes


14

Ben bir dosya adı var a.b.c.txt, ben bu dize bölünmüş istiyorum

string1=a.b.c
string2=txt

Temelde dosya adını ve uzantısını bölmek istiyorum. Ben kullanılan cutama o kadar böler a,b,cve txt. Son sınırlayıcıdaki ipi kesmek istiyorum.

Birisi yardımcı olabilir mi?

Yanıtlar:


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

Kod güzelliği!
Nam G VU

15

Bunu yapmak için birçok araç var.

Kullandığınız gibi 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

Parametre genişletme kullanırdım (kabuk destekliyorsa):

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

1
bash çözümü zariftir.
törzsmókus

kesik bir dönemlerinin sabit sayıda sadece çalışır!
törzsmókus

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

cutKomut sınırlandırmak olacaktır .ve size 4 faktörleri verecektir ( a, b, c, txt). Yukarıdaki komut, 1'den 3'e kadar faktör (dahil) yazdırır.

Veya:

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

Yukarıdaki komut 1'den 3'e kadar olan faktörleri (dahil) yazdırır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.