Por padrão, grep imprime as linhas correspondentes a um padrão, portanto, se o padrão aparecer uma ou mais vezes em uma linha, grep imprimirá essa linha inteira.
Adicionar o sinalizador -m 7 dirá grep para imprimir apenas as primeiras 7 linhas onde o padrão aparece.
Então, isso deve fazer o que você quer (eu não testei):
grep -o -m 1 xyz myfile | head -1
Editar: como apontado por @Kusalananda, você não precisa estritamente do -m , mas usá-lo significa que grep não precisará analisar o arquivo inteiro e produzirá o resultado mais rápido, especialmente se myfile é um arquivo grande.