A razão pela qual isso não funcionará é que o shell divide o comando em duas partes como esta:
screen -d -m /bin/cat /var/www/html/filter/unfiltered.txt
awk '{print $1}' >/var/www/html/filter/first.txt
O screen
é executado em cat
em um arquivo separado. Não há saída em stdout para pipe até awk
.
Se você quiser que o pipe seja executado na tela, será necessário agrupá-lo com outra instância de um shell:
screen -d -m bash -c 'cat /var/www/html/filter/unfiltered.txt | awk "{print $1}" >/var/www/html/filter/first.txt'
Feito isso, deve ficar claro que este é um uso desnecessário de cat
e, na verdade, o comando pode ser simplificado assim:
screen -d -m bash -c 'awk "{print $1}" </var/www/html/filter/unfiltered.txt >/var/www/html/filter/first.txt'
Observe que mudei as aspas internas de simples para duplas. Isso ocorre porque usei aspas simples para proteger o comando inteiro (e particularmente $1
da avaliação inicial).