
Tengo 3 archivos en un directorio.
MYO144064T
MYO144064TA
MYO144064TX
Donde cambiarán los dígitos y el undécimo carácter. En mi script csh, quiero extraer las letras 'A' y 'X' probablemente usando grep
La variable $estudio es igual a MYO144064
Lo que he logrado hasta ahora es muy engorroso.
ls | grep $study | cut -c 11 | sed 's/\///'
lo que me da
A
X
¿Cómo puedo hacer esto con procesos mínimos y sin líneas en blanco adicionales?
Respuesta1
ls | grep -oP "(?<=$study.)[A-Z]$"
devolverá cualquier letra mayúscula precedida por el contenido de $study
más un carácter arbitrario ( T
en su ejemplo) y seguida por el final de la línea.
La -P
opción (expresiones regulares de Perl) es necesaria para poder utilizar la expresión retrospectiva positiva (?<=...)
, pero es posible que no esté disponible en todos los sistemas y plataformas.
Respuesta2
ls | grep $study | grep -o "[AX]$"
devuelve sólo el resultado de 'A' o 'X' como último carácter
Respuesta3
Una perl
solución:
$ perl -nle 'print chop if length == 11' file
A
X
O si puedes usar bash
:
while read var
do
[ ${#var} -eq 11 ] && echo ${var:(-1)}
done < file