Extrai parte da string usando grep

1

Eu tenho 3 arquivos em um diretório

MYO144064T
MYO144064TA
MYO144064TX

Onde os dígitos e o 11º caractere serão alterados. No meu script csh, eu quero extrair as letras 'A' e 'X' provavelmente usando o grep

A variável $ study é igual a MYO144064

O que eu consegui até agora é muito complicado

ls | grep $study | cut -c 11 | sed 's/\///'

O que me dá

A
X

Como posso fazer isso com processos mínimos e sem a linha em branco adicional?

    
por moadeep 27.03.2014 / 14:06

3 respostas

2
ls | grep -oP "(?<=$study.)[A-Z]$"

retornará qualquer letra maiúscula precedida pelo conteúdo de $study mais um caractere arbitrário (o T em seu exemplo) e seguido pelo final da linha.

A opção -P (expressões regulares Perl) é necessária para poder usar a expressão lookbehind positiva (?<=...) , mas pode não estar disponível em todos os sistemas e plataformas.

    
por 27.03.2014 / 15:00
0
ls | grep $study | grep -o "[AX]$"

retorna apenas o resultado de 'A' ou 'X' como o último caractere

    
por 27.03.2014 / 14:26
0

Uma solução perl :

$ perl -nle 'print chop if length == 11' file
A
X

Ou se você puder usar bash :

while read var
do
    [ ${#var} -eq 11 ] && echo ${var:(-1)}
done < file
    
por 27.03.2014 / 14:36

Tags