A colocação de um arquivo de entrada em um comando de leitura geralmente é uma receita para o desastre, ele pode funcionar em algumas circunstâncias, mas em muitos casos isso não acontece. Melhor aprender uma maneira mais consistente de fazer isso.
Aqui estão algumas alternativas simples ...
nawk '{print $1}' $( cat input.txt ) > output.txt
ou se você quiser em um loop ...
for FILENAME in $( cat input.txt ); do
nawk '{ print $1 }' $FILENAME >> output.txt
done
Essas abordagens têm a vantagem de você também alterar facilmente a frase
$( cat input.txt )
.. para algo que vai jogar fora comentários após um símbolo # que lhe dá a capacidade de adicionar comentários às suas listas de arquivos. por exemplo.
$( cat input.txt | sed 's/#.*//' )
OBSERVAÇÃO : Se você precisar fornecer caminhos de arquivo que contenham espaços ou tabulações, provavelmente precisará pular o bash e usar uma linguagem de script com menos texto / token, como perl, python, etc.