Tengo un programa texcount
que genera la cantidad de palabras en mi documento LaTeX. También puedo canalizar el resultado de esto para sed
hacer los saltos de línea TeX de nueva línea y escribir esto en un archivo que luego pueda incluir en mi documento final. Pero cuando hago, texcount foo.tex | sed s/$/'\\\\'/ > wc.tex
la salida de la línea de comandos texcount
se suprime.
¿Cómo puedo obtener la salida del primer comando para que se muestre en la terminal y se canalice a sed?
shell
text-processing
utilities
Seamus
fuente
fuente
tee
. Si tiene ciertos shells como Bash, puede canalizar la salida de tee usando>(some further commands)
. En otros shells, tendría que darle a tee un argumento de nombre de archivo (este es su modo de operación estándar), y luego ejecutarsome further commands < thatfile
y luego eliminar ese archivo. O vea la respuesta de Hari a continuación.Necesita el comando "tee", que le permite dividir las tuberías.
Esto te dejaría el archivo output.txt adicional. Lea esto para obtener más información: http://www.unixtutorial.org/2007/12/tee-replicate-standard-output/ También puede hacer "man tee".
fuente
texcount foo.tex | tee unmodified |sed s/$/'\\\\'/ > modified
pone versiones modificadas y no modificadas de la salida en los dos archivos. ¿Cómo imprimo la versión no modificada en el terminal? Lo intentétee stdout
pero eso no imprime nada ...&& cat unmodified
al final. Eso volcará la salida sin modificar al terminal.texcount foo.tex | tee output.txt | sed s/$/'\\\\'/ > wc.tex ; cat output.txt
. O podrías usartexcount foo.tex | tee output.txt; sed s/$/'\\\\'/ output.txt > wc.tex
. En cualquier caso, probablemente querrásrm output.txt
después.Puedes usar lo bastante idiomático
/dev/tty
es un dispositivo mágico que se refiere al terminal de control del proceso actual.fuente