A ferramenta canônica para isso seria sed
.
sed -n -e 's/^.*stalled: //p'
Explicação detalhada:
-
-n
significa não imprimir nada por padrão. -
-e
é seguido por um comando sed. -
s
é o comando de substituição de padrão. - A expressão regular
^.*stalled:
corresponde ao padrão que você está procurando, mais qualquer texto anterior (.*
significa qualquer texto, com um inicial^
para dizer que a correspondência começa no início da linha). Observe que, sestalled:
ocorrer várias vezes na linha, isso corresponderá à última ocorrência. - A correspondência, ou seja, tudo na linha até
stalled:
, é substituído pela string vazia (ou seja, excluída). - O% final
p
significa imprimir a linha transformada.
Se você quiser manter a parte correspondente, use uma referência anterior: na peça de substituição designa o que está dentro de um grupo
\(…\)
no padrão. Aqui, você poderia escrever stalled:
novamente na peça de substituição; esse recurso é útil quando o padrão que você está procurando é mais geral do que uma string simples.
sed -n -e 's/^.*\(stalled: \)//p'
Às vezes, você deseja remover a parte da linha após a partida. Você pode incluí-lo na partida incluindo .*$
no final do padrão (qualquer texto .*
seguido do final da linha $
). A menos que você coloque essa parte em um grupo que você referencie no texto de substituição, o final da linha não estará na saída.
Como ilustração adicional de grupos e referências anteriores, este comando troca a parte antes da partida e a parte depois da partida.
sed -n -e 's/^\(.*\)\(stalled: \)\(.*\)$//p'