Você pode usar awk
como indicado na outra resposta.
Você pode usar sed
ou perl
ou ruby
semelhante: por exemplo,
perl -wlne '/<(.*)>/ and print $1' file
Mas usando bash
conforme solicitado, também é possível.
Primeiro passo. Apenas enviando o arquivo linha por linha:
while read line; do echo $line; done <file
Próxima etapa removendo o prefixo e o sufixo indesejados:
while read line; do line=${line##user=<}; line=${line%%>,}; echo $line; done <file
O mesmo um pouco mais genérico e encurtado:
while read line; do line=${line##*<}; echo ${line%%>*}; done <file
Isso funciona para o seu exemplo e também deve funcionar com outros shells.
Se você quer apenas cortar um par de personagens na frente e no final você pode usar:
while read line; do echo ${line:6:-2}; done <file
Você pode ler a página man fine do bash ( man bash
) para mais detalhes.