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)

War es hilfreich?

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
scroll top