É isso que você quer?
sed -e 's/^.*str//' test.in
Eu tenho um arquivo de log de erros capturados no meu banco de dados, o arquivo contém uma lista dos registros que tinham erros e não foram atualizados. Os nomes dos registros são 10 dígitos e começam com strA:
Error: could not save changes to record strA5903427123
Error: could not save changes to record strB4403298440
Error: could not save changes to record strC5903427342
Error: could not save changes to record strD4403298988
Error: could not save changes to record strE5903427298
Error: could not save changes to record strF4403298232
Error: could not save changes to record strG5903427455
Error: could not save changes to record strH4403298223
Eu quero extrair a lista de dez dígitos e A e remover "Erro: não foi possível salvar as alterações para gravar str", como posso fazê-lo no bash, esta é uma lista muito longa e eu tenho muitos arquivos como este todos para o banco de dados.
usando grep
para listar o ID de 10 dígitos que começa com A
grep -Eo "A[0-9]{10}" file
saída
A5903427123
Para listar o ID de 10 dígitos que começa com qualquer alfa maiúscula.
grep -Eo "[A-Z][0-9]{10}" file
A5903427123
C5903427342
D4403298988
E5903427298
F4403298232
G5903427455
H4403298223
Você pode fazer isso em awk
da seguinte forma:
awk '{print $8}' file | tr -d "str"
A5903427123
B4403298440
C5903427342
D4403298988
E5903427298
F4403298232
G5903427455
H4403298223
Tags text-processing logs