Pregunta

Mi script toma un nombre de archivo en la forma R # TYPE.TXT (# es un número y el tipo es de dos o tres caracteres). Quiero que mi script para dame TIPO. ¿Qué debo hacer para conseguirlo? Supongo que tengo que usar awk y sed.

estoy usando / bin / sh (que es un requisito)

¿Fue útil?

Solución

Puede usar awk

$ echo R1CcC.TXT | awk '{sub(/.*[0-9]/,"");sub(".TXT","")}{print}'
CcC

o

$ echo R1CcC.TXT | awk '{gsub(/.*[0-9]|\.TXT$/,"");print}'
CcC

y si Sed es realmente lo que quieres

$ echo R9XXX.TXT | sed 's/R[0-9]\(.*\)\.TXT/\1/'
XXX

Otros consejos

creo que esto es lo que busca.

$ echo R3cf.txt | sed "s/.[0-9]\(.*\)\..*/\1/"

cf

Si TXT es siempre mayúscula y el nombre del archivo siempre empieza con R se podía hacer algo así.

$ echo R3cf.txt | sed "s/R[0-9]\(.*\)\.TXT/\1/"

Se puede utilizar sólo la cáscara (dependiendo de lo que su cáscara es bin/sh:

f=R9ABC.TXT
f="${f%.TXT}"       # remove the extension
type="${f#R[0-9]}"  # remove the first bit
echo "$type"        # ==> ABC
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top