Extrahieren einer Zeichenkette aus einem Dateinamen
Frage
Mein Skript nimmt einen Dateinamen in der Form R # TYPE.TXT (# eine Zahl ist und TYPE zwei oder drei Zeichen). Ich möchte mein Skript mich TYPE geben. Was soll ich es tun? Ich glaube, ich brauche awk zu verwenden und sed.
Ich verwende / bin / sh (das ist eine Anforderung)
Lösung
Sie verwenden können awk
$ echo R1CcC.TXT | awk '{sub(/.*[0-9]/,"");sub(".TXT","")}{print}'
CcC
oder
$ echo R1CcC.TXT | awk '{gsub(/.*[0-9]|\.TXT$/,"");print}'
CcC
und wenn sed ist wirklich, was Sie wollen
$ echo R9XXX.TXT | sed 's/R[0-9]\(.*\)\.TXT/\1/'
XXX
Andere Tipps
Ich denke, das ist das, was Sie suchen.
$ echo R3cf.txt | sed "s/.[0-9]\(.*\)\..*/\1/"
cf
Wenn txt immer oberer Fall ist und der Dateiname immer mit R beginnt man so etwas tun könnte.
$ echo R3cf.txt | sed "s/R[0-9]\(.*\)\.TXT/\1/"
Sie können nur die Shell verwenden (je nachdem, was Shell Ihr bin/sh
ist:
f=R9ABC.TXT
f="${f%.TXT}" # remove the extension
type="${f#R[0-9]}" # remove the first bit
echo "$type" # ==> ABC
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow