У меня есть программа, texcount
которая выводит количество слов в моем документе LaTeX. Я также могу направить выходные данные этого, чтобы sed
сделать переносы строк TeX newlines и записать это в файл, который я могу затем включить в мой окончательный документ. Но когда я делаю texcount foo.tex | sed s/$/'\\\\'/ > wc.tex
вывод командной строки texcount
, подавляется.
Как я могу получить выходные данные первой команды, которые будут отображены в терминале и переданы в sed?
tee
. Если вы уверены, что такие оболочки, как Bash, вы можете передать выходные данные Tee используя>(some further commands)
. В других оболочках вам нужно будет указать в качестве аргумента имя файла (это стандартный режим работы), а затем запуститьsome further commands < thatfile
, а затем удалить этот файл. Или посмотрите ответ Хари ниже.Вам нужна команда "tee", которая позволяет разбивать трубы.
Это оставит вам дополнительный файл output.txt. Прочитайте это для получения дополнительной информации: http://www.unixtutorial.org/2007/12/tee-replicate-standard-output/ Вы также можете сделать «man tee».
источник
texcount foo.tex | tee unmodified |sed s/$/'\\\\'/ > modified
помещает измененные и неизмененные версии вывода в два файла. Как распечатать немодифицированную версию на терминал? Я пытался,tee stdout
но это ничего не печатает ...&& cat unmodified
в конце. Это выведет немодифицированный вывод в терминал.texcount foo.tex | tee output.txt | sed s/$/'\\\\'/ > wc.tex ; cat output.txt
. Или вы могли бы использоватьtexcount foo.tex | tee output.txt; sed s/$/'\\\\'/ output.txt > wc.tex
. В любом случае, вы, вероятно, захотитеrm output.txt
потом.Вы можете использовать довольно идиоматический
/dev/tty
магическое устройство, которое относится к управляющему терминалу текущего процесса.источник