Ich habe ein Programm texcount
, das die Anzahl der Wörter in meinem LaTeX-Dokument ausgibt. Ich kann die Ausgabe auch sed
weiterleiten, um die TeX-Zeilenumbrüche der Zeilenumbrüche zu erstellen und diese in eine Datei zu schreiben, die ich dann in mein endgültiges Dokument aufnehmen kann. Aber wenn ich das tue, wird texcount foo.tex | sed s/$/'\\\\'/ > wc.tex
die Befehlszeilenausgabe von texcount
unterdrückt.
Wie kann ich die Ausgabe des ersten Befehls erhalten, der im Terminal angezeigt und an sed weitergeleitet wird?
shell
text-processing
utilities
Seamus
quelle
quelle
tee
. Wenn Sie bestimmte Muscheln wie Bash sind, können Sie die Ausgabe des T-Stücks mit verwenden>(some further commands)
. In anderen Shellssome further commands < thatfile
müssten Sie tee ein Dateinamenargument geben (dies ist die Standardbetriebsart) und dann ausführen und dann die Datei löschen. Oder siehe Haris Antwort unten.Sie benötigen den Befehl "tee", mit dem Sie Rohre teilen können.
Dies würde Ihnen die zusätzliche Datei output.txt überlassen. Lesen Sie dies für weitere Informationen: http://www.unixtutorial.org/2007/12/tee-replicate-standard-output/ Sie können auch "man tee" machen.
quelle
texcount foo.tex | tee unmodified |sed s/$/'\\\\'/ > modified
Fügt modifizierte und nicht modifizierte Versionen der Ausgabe in die beiden Dateien ein. Wie drucke ich die unveränderte Version auf das Terminal? Ich habe versucht,tee stdout
aber das druckt nichts ...&& cat unmodified
am Ende hinzufügen . Dadurch wird die unveränderte Ausgabe an das Terminal ausgegeben.texcount foo.tex | tee output.txt | sed s/$/'\\\\'/ > wc.tex ; cat output.txt
. Oder du könntest verwendentexcount foo.tex | tee output.txt; sed s/$/'\\\\'/ output.txt > wc.tex
. In beiden Fällen möchten Sie dann wahrscheinlichrm output.txt
danach.Sie können die ziemlich idiomatische verwenden
/dev/tty
ist ein magisches Gerät, das sich auf das steuernde Terminal des aktuellen Prozesses bezieht.quelle