Zeichenkette am letzten Begrenzer abschneiden


14

Ich habe einen Dateinamen wie a.b.c.txt, ich möchte, dass diese Zeichenfolge als geteilt wird

string1=a.b.c
string2=txt

Grundsätzlich möchte ich den Dateinamen und seine Erweiterung aufteilen. Ich habe verwendet, cutaber es spaltet sich als a,b,cund txt. Ich möchte die Zeichenfolge am letzten Begrenzer abschneiden.

Kann jemand helfen?

Antworten:


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

Schönheit des Codes!
Nam G VU

15

Dafür gibt es viele Tools.

Wie du benutzt hast 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

Ich hätte die Parametererweiterung verwendet (wenn die Shell dies unterstützt):

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

1
Die Bash-Lösung ist elegant.
Törzsmókus

Der Schnitt funktioniert nur mit einer festen Anzahl von Perioden!
Törzsmókus

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

cutBefehl begrenzt .und gibt Ihnen 4 Faktoren ( a, b, c, txt). Der obige Befehl gibt den Faktor 1 bis 3 aus (eingeschlossen).

Oder:

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

Der obige Befehl gibt den Faktor 1 bis 3 aus (eingeschlossen).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.