Remover caracteres no padrão de palavras

1

Eu tenho frases com palavras que têm um padrão como p.G345L e p.X31Z . Preciso remover p. , então recebo G345L e X31Z .

    
por user2957777 04.06.2014 / 20:49

3 respostas

3

Não tenho certeza do que você delimitou, mas você pode canalizar isso facilmente através do sed. Com a implementação GNU de sed , no padrão de correspondência '\ b' irá denotar um limite de palavra, que você pode usar para se certificar de que você não pegar parte de uma frase, como "parar".

$ cat file
p.G345L sentence stop.  p.X31Z part of another sentence
$ sed 's/\bp\.//g' file 
G345L sentence stop.  X31Z part of another sentence
    
por 04.06.2014 / 20:56
2

Se o padrão for p. seguido por uma letra maiúscula, seguida por uma seqüência de um ou mais dígitos decimais seguidos por uma letra maiúscula, isso seria (POSIXly):

sed 's/p\.\([[:upper:]][[:digit:]]\{1,\}[[:upper:]]\)//g'
    
por 04.06.2014 / 21:04
1

Você pode fazer isso de várias formas.

com perl :

$ echo "p.G345L and p.X31Z" | perl -pe 's/p\.//g'
G345L and X31Z

com sed :

$ echo "p.G345L and p.X31Z" | sed 's/p\.//g'
G345L and X31Z
    
por 04.06.2014 / 20:55