Ejecutando CAT en SCREEN no hay resultados para archivar

Ejecutando CAT en SCREEN no hay resultados para archivar

Estoy intentando codificar este comando para que se ejecute en la pantalla junto con otros 2 que se usarán catpara leer un archivo y luego canalizarlo awkpara filtrarlo. Aquí está el comando;

screen -d -m /bin/cat /var/www/html/filter/unfiltered.txt | awk '{print $1}' > /var/www/html/filter/first.txt

Si reviso la pantalla que está separada veo que filtra la lista, cuando se completa, el archivo first.txtestá creado pero vacío. Vi algo sobre el uso -Len pantalla para un registro de salida, pero quiero que la salida vaya a la misma carpeta en la que se encuentra la lista no filtrada y llame first.txt, no puedo entender por qué se ejecutará correctamente, pero el archivo de salida está vacío cada vez. Si lo ejecuto sin screen -d -mel archivo creado no está vacío. Creo que me falta algo con el comando de pantalla. Recién comencé a usar la pantalla. No estoy seguro de cuándo más publicar.

Respuesta1

La razón por la que esto no funcionará es que el shell divide el comando en dos partes de esta manera:

screen -d -m /bin/cat /var/www/html/filter/unfiltered.txt

awk '{print $1}' >/var/www/html/filter/first.txt

Se screenejecuta caten una pty separada. Entonces no hay salida ensalida estándarpara canalizar a awk.

Si desea que la tubería se ejecute bajo la pantalla, debe agruparla con otra instancia de un shell:

screen -d -m bash -c 'cat /var/www/html/filter/unfiltered.txt | awk "{print $1}" >/var/www/html/filter/first.txt'

Una vez hecho esto, debería quedar claro que se trata de un uso innecesario caty, de hecho, el comando se puede simplificar así:

screen -d -m bash -c 'awk "{print $1}" </var/www/html/filter/unfiltered.txt >/var/www/html/filter/first.txt'

Observe que he cambiado las comillas internas de simples a dobles. Esto se debe a que he utilizado comillas simples para proteger todo el comando (y particularmente $1de la evaluación temprana).

información relacionada