A outra resposta resolve seu problema imediato, mas uma solução para o caso geral de "combinar dois comandos" continua a ser mencionada. Acredite ou não, o ecossistema Unix foi projetado com isso em mente, e seu shell definitivamente lhe dará uma maneira de fazê-lo.
Se você deseja alimentar um arquivo por meio de um "pipeline" de comandos, use o | (pipe) personagem no bash (presumivelmente, o shell que você está usando).
Algumas outras ferramentas úteis também merecem ser mencionadas: o utilitário "cat" e o ">" operador de redirecionamento.
Vamos supor que seu arquivo seja chamado de input.txt e você queira executá-lo em seu pipeline e chamar o resultado output.txt.
Vamos criar nosso comando peça por peça:
$ cat input.txt
Aqui está o "gato" que eu estava falando. Para todos os efeitos, apenas produz o conteúdo do seu arquivo. Agora, vamos adicionar o primeiro comando em nosso pipeline: a parte "remove non-alphabet". Vou pegar um pedaço do comando heemayl's sed para fazer isso:
$ cat input.txt | sed 's/[^[:alpha:]]/_/g'
Aprender sed e expressões regulares é uma coisa totalmente diferente, então vamos nos contentar com o fato de que esse comando faz o que queremos por enquanto. Adicionando a próxima peça:
$ cat input.txt | sed 's/[^[:alpha:]]/_/g' | tr 'A-Z' 'a-z'
Adotei uma abordagem diferente da heemail para essa, mas faz o mesmo trabalho. Finalmente, vamos colocar a saída no destino que queremos:
$ cat input.txt | sed 's/[^[:alpha:]]/_/g' | tr 'A-Z' 'a-z' > output.txt
Lá vamos nós, nós fizemos isso. Você pode encadear tantos comandos quanto quiser com o | operador, em seguida, colocar a saída em um arquivo usando & gt ;. Esta é uma tarefa muito comum no ambiente de linha de comando, por isso é bom saber o que está acontecendo e se acostumar a usá-lo. ;)