Você tem que processar file_name
como um parâmetro de entrada que não é aplicado apenas magicamente aos comandos da função ...
func() {
sed -e 's/^A/\|/g' "$1"
}
O primeiro parâmetro passado é armazenado em $1
, o segundo em $2
e assim por diante.
Isso funcionaria com sua versão, BTW: func < file_name