Mam program, texcount
który wyświetla liczbę słów w moim dokumencie LaTeX. Mogę również potokować wyjście tego, aby sed
dokonać podziału wierszy TeXa na nowe wiersze i zapisać to w pliku, który mogę następnie dołączyć do końcowego dokumentu. Ale kiedy to robię, texcount foo.tex | sed s/$/'\\\\'/ > wc.tex
wyjście z wiersza poleceń texcount
jest pomijane.
Jak mogę uzyskać wynik pierwszego polecenia wyświetlanego w terminalu i przesyłanego potokowo do sed?
shell
text-processing
utilities
Seamus
źródło
źródło
tee
. Jeśli masz pewne powłoki, takie jak Bash, możesz potokować wyjście tee za pomocą>(some further commands)
. W innych powłokach musisz podać argumentowi tee nazwę pliku (jest to jego standardowy tryb działania), a następnie uruchomićsome further commands < thatfile
, a następnie usunąć ten plik. Lub zobacz odpowiedź Hari poniżej.Potrzebujesz komendy „tee”, która pozwala dzielić rury.
To zostawiłoby ci dodatkowy plik output.txt. Przeczytaj to, aby uzyskać więcej informacji: http://www.unixtutorial.org/2007/12/tee-replicate-standard-output/ Możesz także zrobić „man tee”.
źródło
texcount foo.tex | tee unmodified |sed s/$/'\\\\'/ > modified
umieszcza zmodyfikowane i niezmodyfikowane wersje danych wyjściowych w dwóch plikach. Jak wydrukować niezmodyfikowaną wersję na terminalu? Próbowałem,tee stdout
ale nic nie drukuje ...&& cat unmodified
na końcu. Spowoduje to zrzucenie niezmodyfikowanego wyjścia do terminala.texcount foo.tex | tee output.txt | sed s/$/'\\\\'/ > wc.tex ; cat output.txt
. Lub możesz użyćtexcount foo.tex | tee output.txt; sed s/$/'\\\\'/ output.txt > wc.tex
. W obu przypadkach prawdopodobnie będziesz chciałrm output.txt
później.Możesz użyć dość idiomatycznego
/dev/tty
to magiczne urządzenie, które odnosi się do terminala kontrolnego bieżącego procesu.źródło