Com qualquer versão de sed
, usando expressões regulares básicas:
sed -e 's/.* \([^@]\+\)@.*//' /tmp/has2.txt
Quanto à sua segunda pergunta, você pode sempre usar dados digitados ou extraídos ou gerados de qualquer maneira como entrada para outro processo, desde que:
-
está em um formato com o qual o outro processo pode trabalhar (ou pode ser transformado nesse formato com sed
, awk
, perl
e / ou outras ferramentas usuais)
-
o outro processo é capaz de receber entradas de stdin ou
de um arquivo ou arquivos arbitrários - ou seja, não é codificado para receber sua entrada apenas de um arquivo específico em um local específico .... e, mesmo assim, se você criar / substituir esse arquivo específico para que ele contenha seus dados ainda funcionará.
Esta é a beleza do unix e da abordagem de pequenas ferramentas - ele incentiva você a pensar de uma maneira centrada em dados (onde os dados são seus para fazer o que você quer com, usando as ferramentas de sua escolha incluindo custom-written ferramentas) em vez de uma forma centrada no aplicativo (em que os dados pertencem ao aplicativo de caixa preta mágica e você só pode manipular ou interagir com os dados por meio desse aplicativo em particular).
Tão importante quanto isso, incentiva os desenvolvedores, inclusive os desenvolvedores de aplicativos, a pensar da mesma maneira centrada em dados. E os usuários podem pensar nisso como um bug e uma violação de seus direitos quando os desenvolvedores de aplicativos frustram suas necessidades ao tentar bloquear os dados dos usuários em seus aplicativos.