La extracción de una cadena a partir de un nombre de archivo
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)
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