J'ai un programme texcount
qui génère le nombre de mots dans mon document LaTeX. Je peux également diriger la sortie de ceci pour sed
créer des sauts de ligne TeX et écrire ceci dans un fichier que je pourrai ensuite inclure dans mon document final. Mais quand je fais texcount foo.tex | sed s/$/'\\\\'/ > wc.tex
la sortie de ligne de commande de texcount
est supprimée.
Comment puis-je afficher la sortie de la première commande dans le terminal et la canaliser vers sed?
shell
text-processing
utilities
Seamus
la source
la source
tee
. Si vous êtes certains shells comme Bash, vous pouvez diriger la sortie de tee en utilisant>(some further commands)
. Dans d'autres shells, vous devrez donner à tee un argument de nom de fichier (c'est son mode de fonctionnement standard), puis exécutersome further commands < thatfile
, puis supprimer ce fichier. Ou voir la réponse de Hari ci-dessous.Vous avez besoin de la commande "tee", qui vous permet de diviser les tuyaux.
Cela vous laisserait le fichier output.txt supplémentaire. Lisez ceci pour plus d'informations: http://www.unixtutorial.org/2007/12/tee-replicate-standard-output/ Vous pouvez également faire "man tee".
la source
texcount foo.tex | tee unmodified |sed s/$/'\\\\'/ > modified
place les versions modifiées et non modifiées de la sortie dans les deux fichiers. Comment imprimer la version non modifiée sur le terminal? J'ai essayétee stdout
mais ça n'imprime rien ...&& cat unmodified
à la fin. Cela videra la sortie non modifiée sur le terminal.texcount foo.tex | tee output.txt | sed s/$/'\\\\'/ > wc.tex ; cat output.txt
. Ou vous pourriez utilisertexcount foo.tex | tee output.txt; sed s/$/'\\\\'/ output.txt > wc.tex
. Dans les deux cas, vous voudrez probablementrm output.txt
ensuite.Vous pouvez utiliser le assez idiomatique
/dev/tty
est un dispositif magique qui fait référence au terminal de contrôle du processus actuel.la source