A ferramenta canônica para isso seria sed .
sed -n -e 's/^.*stalled: //p'
Explicação detalhada:
-
-nsignifica 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
psignifica 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'