Eu tenho um arquivo de texto grande, onde uma parte dele se parece com isso (valores editados):
JULIANA XXXX006060 LI1033322 THC BRL 730.00
XXXX006296 AA1004737 THC BRL 1,740.00
SANTOS JULIANA XXXX006668 AA1004786 THC BRL 8,150.00
SANTOS JULIANA CABINDA XXXX006697 AA1004777 THC BRL 2,325.00
SANTOS JULIANA XXXX006699 AA1004790 THC BRL 2,325.00
JULIANA BATA XXXX006141 CCC012946 THC BRL 1,460.00
JULIANA BATA XXXX006153 CCC013054 THC BRL 870.00
JULIANA XXXX006269 CCC013105 THC BRL 870.00
JULIANA XXXX006295 CCC013083 THC BRL 870.00
JULIANA BATA XXXX006305 CCC013043 THC BRL 1,460.00
Eu quero sempre pegar (com uma cut
ou awk
outra coisa) a string que começa com XXXX00
, mas nunca está no mesmo número de campo.
Como posso fazer isso em um shell-script?
shell-script
text-processing
Vitor Gatti
fonte
fonte
-E
opção (embora não faça mal).Parece que você deseja o quinto campo da direita, então
fonte
Usando
grep
com PCRE:Você pode se dar bem com
-w
(palavra) nesse caso, observe que os caracteres constituintes da palavra são considerados como[[:alnum:]_]
:fonte
Algumas outras maneiras
Com GNU
awk
Com versões mais antigas do GNU
awk
,--re-interval
poderia ser necessário, de modoCom
tr
egrep
fonte
parece que as contagens de campos são diferentes porque você tem uma lista de pessoas e eles têm números diferentes de nomes. mas provavelmente nenhum deles tem um nome com 0, portanto, basta cortar completamente até a primeira string delimitada por espaço com uma, salvar e cortar tudo o que se segue.
fonte