<Sebelum | Contents [show] | Seterusnya>
fmt – Pemformat Teks Mudah
. fmt program juga melipat teks, serta banyak lagi. Ia menerima sama ada fail atau input standard dan melaksanakan pemformatan perenggan pada strim teks. Pada asasnya, ia mengisi dan menggabungkan baris dalam teks sambil mengekalkan baris kosong dan lekukan.
Untuk menunjukkan, kami memerlukan beberapa teks. Mari kita angkat sedikit daripada fmt halaman maklumat:
`fmt' membaca daripada argumen FILE yang ditentukan (atau input standard jika tiada diberikan), dan menulis kepada output standard.
Secara lalai, baris kosong, ruang antara perkataan dan lekukan adalah
`fmt' membaca daripada argumen FILE yang ditentukan (atau input standard jika tiada diberikan), dan menulis kepada output standard.
Secara lalai, baris kosong, ruang antara perkataan dan lekukan adalah
dipelihara dalam output; baris input berturut-turut dengan lekukan berbeza tidak dicantumkan; tab dikembangkan pada input dan diperkenalkan pada output.
`fmt' lebih suka memutuskan baris pada penghujung ayat, dan cuba mengelakkan patah baris selepas perkataan pertama ayat atau sebelum perkataan terakhir ayat. "Pemecahan ayat" ditakrifkan sebagai sama ada penghujung perenggan atau perkataan yang berakhir dengan mana-mana `.?!', diikuti dengan dua ruang atau hujung baris, mengabaikan sebarang kurungan atau petikan selang. Seperti TeX, `fmt' membaca keseluruhan "perenggan" sebelum memilih pemisah baris; algoritma adalah varian daripada yang diberikan oleh Donald E. Knuth dan Michael F. Plass dalam "Memecah Perenggan Ke Baris",
`Perisian--Amalan & Pengalaman' 11, 11 (November 1981), 1119-1184.
dipelihara dalam output; baris input berturut-turut dengan lekukan berbeza tidak dicantumkan; tab dikembangkan pada input dan diperkenalkan pada output.
`fmt' lebih suka memutuskan baris pada penghujung ayat, dan cuba mengelakkan patah baris selepas perkataan pertama ayat atau sebelum perkataan terakhir ayat. "Pemecahan ayat" ditakrifkan sebagai sama ada penghujung perenggan atau perkataan yang berakhir dengan mana-mana `.?!', diikuti dengan dua ruang atau hujung baris, mengabaikan sebarang kurungan atau petikan selang. Seperti TeX, `fmt' membaca keseluruhan "perenggan" sebelum memilih pemisah baris; algoritma adalah varian daripada yang diberikan oleh Donald E. Knuth dan Michael F. Plass dalam "Memecah Perenggan Ke Baris",
`Perisian--Amalan & Pengalaman' 11, 11 (November 1981), 1119-1184.
Kami akan menyalin teks ini ke dalam editor teks kami dan menyimpan fail sebagai fmt-info.txt. Sekarang, katakan kami ingin memformat semula teks ini untuk memuatkan lajur lebar lima puluh aksara. Kita boleh melakukan ini dengan memproses fail dengan fmt dan juga -w pilihan:
[saya@linuxbox ~]$ fmt -w 50 fmt-info.txt | kepala
`fmt' dibaca daripada argumen FILE yang ditentukan (atau input standard jika
tiada yang diberikan), dan menulis kepada output standard.
Secara lalai, baris kosong, ruang antara perkataan dan lekukan adalah
dipelihara dalam output; baris input berturut-turut dengan lekukan berbeza tidak dicantumkan; tab dikembangkan pada input dan diperkenalkan pada output.
[saya@linuxbox ~]$ fmt -w 50 fmt-info.txt | kepala
`fmt' dibaca daripada argumen FILE yang ditentukan (atau input standard jika
tiada yang diberikan), dan menulis kepada output standard.
Secara lalai, baris kosong, ruang antara perkataan dan lekukan adalah
dipelihara dalam output; baris input berturut-turut dengan lekukan berbeza tidak dicantumkan; tab dikembangkan pada input dan diperkenalkan pada output.
Nah, itu keputusan yang janggal. Mungkin kita sebenarnya harus membaca teks ini, kerana ia menerangkan perkara yang berlaku:
Secara lalai, baris kosong, ruang antara perkataan dan lekukan dikekalkan dalam output; baris input berturut-turut dengan lekukan berbeza tidak dicantumkan; tab dikembangkan pada input dan diperkenalkan pada output.
Jadi, fmt sedang mengekalkan lekukan baris pertama. Nasib baik, fmt menyediakan pilihan untuk membetulkan ini:
[saya@linuxbox ~]$ fmt -cw 50 fmt-info.txt
`fmt' membaca daripada argumen FILE yang ditentukan (atau input standard jika tiada diberikan), dan menulis kepada output standard.
[saya@linuxbox ~]$ fmt -cw 50 fmt-info.txt
`fmt' membaca daripada argumen FILE yang ditentukan (atau input standard jika tiada diberikan), dan menulis kepada output standard.
Secara lalai, baris kosong, ruang antara perkataan dan lekukan dikekalkan dalam output; baris input berturut-turut dengan lekukan berbeza tidak dicantumkan; tab dikembangkan pada input dan diperkenalkan pada output.
`fmt' lebih suka memutuskan baris pada penghujung ayat, dan cuba mengelakkan pemutusan baris selepas perkataan pertama ayat atau sebelum
perkataan terakhir ayat. "Pemecahan ayat" ditakrifkan sebagai sama ada penghujung perenggan atau perkataan yang berakhir dengan mana-mana `.?!', diikuti dengan dua ruang atau hujung baris, mengabaikan sebarang
kurungan atau petikan campur tangan. Seperti TeX,
`fmt' membaca keseluruhan "perenggan" sebelum memilih pemisah baris; algoritma adalah varian daripada
yang diberikan oleh Donald E. Knuth dan Michael F. Plass dalam "Breaking Paragraphs Into Lines",
`Perisian--Amalan & Pengalaman' 11, 11
(November 1981), 1119-1184.
Secara lalai, baris kosong, ruang antara perkataan dan lekukan dikekalkan dalam output; baris input berturut-turut dengan lekukan berbeza tidak dicantumkan; tab dikembangkan pada input dan diperkenalkan pada output.
`fmt' lebih suka memutuskan baris pada penghujung ayat, dan cuba mengelakkan pemutusan baris selepas perkataan pertama ayat atau sebelum
perkataan terakhir ayat. "Pemecahan ayat" ditakrifkan sebagai sama ada penghujung perenggan atau perkataan yang berakhir dengan mana-mana `.?!', diikuti dengan dua ruang atau hujung baris, mengabaikan sebarang
kurungan atau petikan campur tangan. Seperti TeX,
`fmt' membaca keseluruhan "perenggan" sebelum memilih pemisah baris; algoritma adalah varian daripada
yang diberikan oleh Donald E. Knuth dan Michael F. Plass dalam "Breaking Paragraphs Into Lines",
`Perisian--Amalan & Pengalaman' 11, 11
(November 1981), 1119-1184.
Lebih baik. Dengan menambah -c pilihan, kita kini mempunyai hasil yang diingini.
fmt mempunyai beberapa pilihan yang menarik:
Jadual 21-3: Pilihan fmt
Huraian Pilihan
Huraian Pilihan
-c Beroperasi dalam margin mahkota mod. Ini mengekalkan lekukan dua baris pertama perenggan. Baris berikutnya diselaraskan dengan lekukan baris kedua.
-p rentetan Hanya format baris tersebut bermula dengan awalan rentetan. Selepas pemformatan, kandungan rentetan diberi awalan pada setiap baris yang diformat semula. Pilihan ini boleh digunakan untuk memformat teks dalam komen kod sumber. Sebagai contoh, sebarang bahasa pengaturcaraan atau fail konfigurasi yang menggunakan aksara "#" untuk menggambarkan ulasan boleh diformatkan dengan menentukan -p '#' supaya hanya komen yang akan diformatkan. Lihat contoh di bawah.
-s Mod pisah sahaja. Dalam mod ini, garisan hanya akan dipecahkan agar sesuai dengan lebar lajur yang ditentukan. Garis pendek tidak akan digabungkan untuk mengisi baris. Mod ini berguna apabila memformat teks seperti kod yang tidak diingini untuk menyertainya.
-u Lakukan jarak seragam. Ini akan menggunakan "mesin taip-
gaya” memformat kepada teks. Ini bermakna satu ruang antara perkataan dan dua ruang antara ayat. Mod ini berguna untuk mengalih keluar "justifikasi", iaitu teks yang telah dilapisi dengan ruang untuk memaksa penjajaran pada kedua-dua jidar kiri dan kanan.
-w lebar Format teks agar muat dalam lajur lebar aksara lebar. Lalai ialah 75 aksara. Catatan: fmt sebenarnya memformat garisan lebih pendek sedikit daripada lebar yang ditentukan untuk membolehkan pengimbangan garisan.
. -p pilihan adalah sangat menarik. Dengan itu, kita boleh memformat bahagian fail yang dipilih, dengan syarat baris yang akan diformatkan semuanya bermula dengan jujukan aksara yang sama. Banyak bahasa pengaturcaraan menggunakan tanda paun (#) untuk menunjukkan permulaan ulasan dan dengan itu boleh diformat menggunakan pilihan ini. Mari buat fail yang menyerupai program yang menggunakan ulasan:
[saya@linuxbox ~]$ kucing > fmt-code.txt
# Fail ini mengandungi kod dengan ulasan.
# Baris ini adalah ulasan.
# Diikuti oleh baris komen yang lain.
# Dan satu lagi.
Ini, sebaliknya, adalah baris kod. Dan satu lagi baris kod.
Dan lain.
[saya@linuxbox ~]$ kucing > fmt-code.txt
# Fail ini mengandungi kod dengan ulasan.
# Baris ini adalah ulasan.
# Diikuti oleh baris komen yang lain.
# Dan satu lagi.
Ini, sebaliknya, adalah baris kod. Dan satu lagi baris kod.
Dan lain.
Fail sampel kami mengandungi ulasan yang bermula dengan rentetan "# " (a # diikuti dengan ruang) dan baris "kod" yang tidak. Sekarang, menggunakan fmt, kami boleh memformatkan ulasan dan membiarkan kod itu tidak disentuh:
[saya@linuxbox ~]$ fmt -w 50 -p '# ' fmt-code.txt
# Fail ini mengandungi kod dengan ulasan.
# Baris ini adalah ulasan. Diikuti oleh yang lain
# baris ulasan. Dan satu lagi.
Ini, sebaliknya, adalah baris kod. Dan satu lagi baris kod.
Dan lain.
[saya@linuxbox ~]$ fmt -w 50 -p '# ' fmt-code.txt
# Fail ini mengandungi kod dengan ulasan.
# Baris ini adalah ulasan. Diikuti oleh yang lain
# baris ulasan. Dan satu lagi.
Ini, sebaliknya, adalah baris kod. Dan satu lagi baris kod.
Dan lain.
Perhatikan bahawa baris ulasan bersebelahan digabungkan, manakala baris kosong dan baris yang tidak bermula dengan awalan yang ditentukan dikekalkan.