Saya memiliki program texcount
yang menampilkan jumlah kata dalam dokumen LaTeX saya. Saya juga dapat mem-pipe output ini untuk sed
membuat baris baru TeX linebreaks dan menulis ini ke file yang kemudian dapat saya sertakan dalam dokumen terakhir saya. Tetapi ketika saya melakukan texcount foo.tex | sed s/$/'\\\\'/ > wc.tex
output perintah baris texcount
ditekan.
Bagaimana saya bisa mendapatkan output dari perintah pertama yang akan ditampilkan di terminal dan disalurkan ke sed?
shell
text-processing
utilities
Seamus
sumber
sumber
tee
. Jika Anda memiliki cangkang tertentu seperti Bash, Anda dapat menyalurkan output tee menggunakan>(some further commands)
. Di shell lain, Anda harus memberikan tee argumen nama file (ini adalah mode operasi standarnya), kemudian jalankansome further commands < thatfile
, dan kemudian hapus file itu. Atau lihat jawaban Hari di bawah ini.Anda memerlukan perintah "tee", yang memungkinkan Anda untuk membagi pipa.
Ini akan meninggalkan Anda file output.txt tambahan. Baca ini untuk info lebih lanjut: http://www.unixtutorial.org/2007/12/tee-replicate-standard-output/ Anda juga dapat melakukan "man tee".
sumber
texcount foo.tex | tee unmodified |sed s/$/'\\\\'/ > modified
menempatkan versi output yang dimodifikasi dan tidak dimodifikasi dalam dua file. Bagaimana cara mencetak versi yang tidak dimodifikasi ke terminal? Saya mencobatee stdout
tetapi tidak mencetak apa-apa ...&& cat unmodified
di bagian akhir. Itu akan membuang output yang tidak dimodifikasi ke terminal.texcount foo.tex | tee output.txt | sed s/$/'\\\\'/ > wc.tex ; cat output.txt
. Atau Anda bisa menggunakannyatexcount foo.tex | tee output.txt; sed s/$/'\\\\'/ output.txt > wc.tex
. Dalam kedua kasus itu, Anda mungkin ingin melakukannyarm output.txt
sesudahnya.Anda bisa menggunakan yang terbilang idiom
/dev/tty
adalah perangkat ajaib yang mengacu pada terminal pengontrol dari proses saat ini.sumber