ฟรีโฮสติ้งออนไลน์สำหรับเวิร์กสเตชัน

<ก่อนหน้านี้ | เนื้อหา | ถัดไป>

fmt – ตัวจัดรูปแบบข้อความอย่างง่าย

พื้นที่ เอฟเอ็มที โปรแกรมยังพับข้อความ และอีกมากมาย ยอมรับไฟล์หรืออินพุตมาตรฐานและดำเนินการจัดรูปแบบย่อหน้าในสตรีมข้อความ โดยทั่วไปจะเติมและรวมบรรทัดในข้อความในขณะที่รักษาบรรทัดว่างและการเยื้อง

ในการสาธิต เราต้องการข้อความ ขอยกบางส่วนจาก เอฟเอ็มที หน้าข้อมูล:


`fmt' อ่านจากอาร์กิวเมนต์ FILE ที่ระบุ (หรืออินพุตมาตรฐานหากไม่มีการกำหนดไว้) และเขียนไปยังเอาต์พุตมาตรฐาน


โดยค่าเริ่มต้น บรรทัดว่าง ช่องว่างระหว่างคำ และการเยื้องคือ

`fmt' อ่านจากอาร์กิวเมนต์ FILE ที่ระบุ (หรืออินพุตมาตรฐานหากไม่มีการกำหนดไว้) และเขียนไปยังเอาต์พุตมาตรฐาน


โดยค่าเริ่มต้น บรรทัดว่าง ช่องว่างระหว่างคำ และการเยื้องคือ


เก็บรักษาไว้ในผลลัพธ์; สายอินพุตต่อเนื่องที่มีการเยื้องต่างกันจะไม่ถูกรวมเข้าด้วยกัน แท็บถูกขยายบนอินพุตและนำไปใช้กับเอาต์พุต


`fmt' ชอบแบ่งบรรทัดที่ส่วนท้ายของประโยค และพยายามหลีกเลี่ยงการขึ้นบรรทัดใหม่หลังจากคำแรกของประโยคหรือก่อนคำสุดท้ายของประโยค "ตัวแบ่งประโยค" หมายถึงส่วนท้ายของย่อหน้าหรือคำที่ลงท้ายด้วย `.?!' ใดๆ ก็ตาม ตามด้วยช่องว่างสองช่องหรือท้ายบรรทัด โดยไม่สนใจวงเล็บหรือเครื่องหมายคำพูดใดๆ ที่ขวางอยู่ เช่นเดียวกับ TeX `fmt' จะอ่าน "ย่อหน้า" ทั้งหมดก่อนที่จะเลือกตัวแบ่งบรรทัด อัลกอริธึมเป็นตัวแปรจากที่ได้รับโดย Donald E. Knuth และ Michael F. Plass ใน "Breaking Paragraphs Into Lines"

`ซอฟต์แวร์--การปฏิบัติและประสบการณ์' 11, 11 (พฤศจิกายน 1981), 1119-1184

เก็บรักษาไว้ในผลลัพธ์; สายอินพุตต่อเนื่องที่มีการเยื้องต่างกันจะไม่ถูกรวมเข้าด้วยกัน แท็บถูกขยายบนอินพุตและนำไปใช้กับเอาต์พุต


`fmt' ชอบแบ่งบรรทัดที่ส่วนท้ายของประโยค และพยายามหลีกเลี่ยงการขึ้นบรรทัดใหม่หลังจากคำแรกของประโยคหรือก่อนคำสุดท้ายของประโยค "ตัวแบ่งประโยค" หมายถึงส่วนท้ายของย่อหน้าหรือคำที่ลงท้ายด้วย `.?!' ใดๆ ก็ตาม ตามด้วยช่องว่างสองช่องหรือท้ายบรรทัด โดยไม่สนใจวงเล็บหรือเครื่องหมายคำพูดใดๆ ที่ขวางอยู่ เช่นเดียวกับ TeX `fmt' จะอ่าน "ย่อหน้า" ทั้งหมดก่อนที่จะเลือกตัวแบ่งบรรทัด อัลกอริธึมเป็นตัวแปรจากที่ได้รับโดย Donald E. Knuth และ Michael F. Plass ใน "Breaking Paragraphs Into Lines"

`ซอฟต์แวร์--การปฏิบัติและประสบการณ์' 11, 11 (พฤศจิกายน 1981), 1119-1184


เราจะคัดลอกข้อความนี้ลงในโปรแกรมแก้ไขข้อความและบันทึกไฟล์เป็น fmt-info.txt. สมมติว่าเราต้องการจัดรูปแบบข้อความนี้ใหม่เพื่อให้พอดีกับคอลัมน์กว้างห้าสิบอักขระ เราสามารถทำได้โดยการประมวลผลไฟล์ด้วย เอฟเอ็มที และ -w ตัวเลือก:


[me@linuxbox ~]$ fmt -w 50 fmt-info.txt | ศีรษะ

`fmt' อ่านจากอาร์กิวเมนต์ FILE ที่ระบุ (หรืออินพุตมาตรฐาน if

ไม่มีให้) และเขียนไปยังเอาต์พุตมาตรฐาน


โดยค่าเริ่มต้น บรรทัดว่าง ช่องว่างระหว่างคำ และการเยื้องคือ

เก็บรักษาไว้ในผลลัพธ์; สายอินพุตต่อเนื่องที่มีการเยื้องต่างกันจะไม่ถูกรวมเข้าด้วยกัน แท็บถูกขยายบนอินพุตและนำไปใช้กับเอาต์พุต

[me@linuxbox ~]$ fmt -w 50 fmt-info.txt | ศีรษะ

`fmt' อ่านจากอาร์กิวเมนต์ FILE ที่ระบุ (หรืออินพุตมาตรฐาน if

ไม่มีให้) และเขียนไปยังเอาต์พุตมาตรฐาน


โดยค่าเริ่มต้น บรรทัดว่าง ช่องว่างระหว่างคำ และการเยื้องคือ

เก็บรักษาไว้ในผลลัพธ์; สายอินพุตต่อเนื่องที่มีการเยื้องต่างกันจะไม่ถูกรวมเข้าด้วยกัน แท็บถูกขยายบนอินพุตและนำไปใช้กับเอาต์พุต


นั่นเป็นผลลัพธ์ที่น่าอึดอัดใจ บางทีเราควรอ่านข้อความนี้จริง ๆ เพราะมันอธิบายสิ่งที่เกิดขึ้น:

โดยค่าเริ่มต้น บรรทัดว่าง ช่องว่างระหว่างคำ และการเยื้องจะคงอยู่ในผลลัพธ์ สายอินพุตต่อเนื่องที่มีการเยื้องต่างกันจะไม่ถูกรวมเข้าด้วยกัน แท็บถูกขยายบนอินพุตและนำไปใช้กับเอาต์พุต

ดังนั้น เอฟเอ็มที กำลังรักษาการเยื้องของบรรทัดแรก โชคดี, เอฟเอ็มที ให้ตัวเลือกในการแก้ไขปัญหานี้:



[me@linuxbox ~]$ fmt -cw 50 fmt-info.txt

`fmt' อ่านจากอาร์กิวเมนต์ FILE ที่ระบุ (หรืออินพุตมาตรฐานหากไม่มีการกำหนดไว้) และเขียนไปยังเอาต์พุตมาตรฐาน

[me@linuxbox ~]$ fmt -cw 50 fmt-info.txt

`fmt' อ่านจากอาร์กิวเมนต์ FILE ที่ระบุ (หรืออินพุตมาตรฐานหากไม่มีการกำหนดไว้) และเขียนไปยังเอาต์พุตมาตรฐาน


โดยค่าเริ่มต้น บรรทัดว่าง ช่องว่างระหว่างคำ และการเยื้องจะคงอยู่ในผลลัพธ์ สายอินพุตต่อเนื่องที่มีการเยื้องต่างกันจะไม่ถูกรวมเข้าด้วยกัน แท็บถูกขยายบนอินพุตและนำไปใช้กับเอาต์พุต


`fmt' ชอบแบ่งบรรทัดที่ท้ายประโยค และพยายามหลีกเลี่ยงการขึ้นบรรทัดใหม่หลังคำแรกของประโยคหรือก่อนคำ

คำสุดท้ายของประโยค "ตัวแบ่งประโยค" หมายถึงส่วนท้ายของย่อหน้าหรือคำที่ลงท้ายด้วย `.?!' ใดๆ ก็ตาม ตามด้วยช่องว่างสองช่องหรือท้ายบรรทัด โดยไม่สนใจใดๆ

วงเล็บแทรกหรือเครื่องหมายคำพูด เช่นเดียวกับ TeX

`fmt' อ่าน "ย่อหน้า" ทั้งหมดก่อนที่จะเลือกตัวแบ่งบรรทัด อัลกอริทึมเป็นตัวแปรของ

ที่มอบให้โดย Donald E. Knuth และ Michael F. Plass ใน "Breaking Paragraphs Into Lines"

`ซอฟต์แวร์--การฝึกฝนและประสบการณ์' 11, 11

(พฤศจิกายน 1981), 1119-1184.

โดยค่าเริ่มต้น บรรทัดว่าง ช่องว่างระหว่างคำ และการเยื้องจะคงอยู่ในผลลัพธ์ สายอินพุตต่อเนื่องที่มีการเยื้องต่างกันจะไม่ถูกรวมเข้าด้วยกัน แท็บถูกขยายบนอินพุตและนำไปใช้กับเอาต์พุต


`fmt' ชอบแบ่งบรรทัดที่ท้ายประโยค และพยายามหลีกเลี่ยงการขึ้นบรรทัดใหม่หลังคำแรกของประโยคหรือก่อนคำ

คำสุดท้ายของประโยค "ตัวแบ่งประโยค" หมายถึงส่วนท้ายของย่อหน้าหรือคำที่ลงท้ายด้วย `.?!' ใดๆ ก็ตาม ตามด้วยช่องว่างสองช่องหรือท้ายบรรทัด โดยไม่สนใจใดๆ

วงเล็บแทรกหรือเครื่องหมายคำพูด เช่นเดียวกับ TeX

`fmt' อ่าน "ย่อหน้า" ทั้งหมดก่อนที่จะเลือกตัวแบ่งบรรทัด อัลกอริทึมเป็นตัวแปรของ

ที่มอบให้โดย Donald E. Knuth และ Michael F. Plass ใน "Breaking Paragraphs Into Lines"

`ซอฟต์แวร์--การฝึกฝนและประสบการณ์' 11, 11

(พฤศจิกายน 1981), 1119-1184.


ดีขึ้นมาก โดยการเพิ่ม -c ตัวเลือก ตอนนี้เราได้ผลลัพธ์ที่ต้องการแล้ว

fmt มีตัวเลือกที่น่าสนใจ:


ตาราง 21-3: ตัวเลือก fmt


คำอธิบายตัวเลือก

คำอธิบายตัวเลือก

-c ดำเนินการใน ขอบมงกุฎ โหมด. ซึ่งจะคงการเยื้องของสองบรรทัดแรกของย่อหน้าไว้ บรรทัดที่ตามมาจะสอดคล้องกับการเยื้องของบรรทัดที่สอง


-p เชือก จัดรูปแบบเฉพาะบรรทัดที่ขึ้นต้นด้วยคำนำหน้า เชือก. หลังจากฟอร์แมตแล้ว เนื้อหาของ เชือก นำหน้าในแต่ละบรรทัดที่จัดรูปแบบใหม่ สามารถใช้ตัวเลือกนี้เพื่อจัดรูปแบบข้อความในความคิดเห็นของซอร์สโค้ด ตัวอย่างเช่น ภาษาการเขียนโปรแกรมหรือไฟล์การกำหนดค่าใดๆ ที่ใช้อักขระ “#” เพื่ออธิบายความคิดเห็น สามารถจัดรูปแบบได้โดยการระบุ -NS '# ' เพื่อจัดรูปแบบความคิดเห็นเท่านั้น ดูตัวอย่างด้านล่าง


-s โหมดแยกเฉพาะ ในโหมดนี้ เส้นจะถูกแบ่งให้พอดีกับความกว้างของคอลัมน์ที่ระบุเท่านั้น เส้นสั้นจะไม่ถูกนำมาต่อกันเพื่อเติมบรรทัด โหมดนี้มีประโยชน์เมื่อจัดรูปแบบข้อความ เช่น รหัสที่ไม่ต้องการเข้าร่วม


-u ทำระยะห่างสม่ำเสมอ สิ่งนี้จะใช้ “เครื่องพิมพ์ดีด-



style” การจัดรูปแบบให้กับข้อความ นี่หมายถึงช่องว่างเดียวระหว่างคำและช่องว่างสองช่องระหว่างประโยค โหมดนี้มีประโยชน์ในการลบ "การจัดชิดขอบ" กล่าวคือ ข้อความที่มีการเว้นวรรคเพื่อบังคับให้จัดตำแหน่งทั้งระยะขอบด้านซ้ายและด้านขวา


-w ความกว้าง จัดรูปแบบข้อความให้พอดีกับคอลัมน์ ความกว้าง ตัวอักษรกว้าง ค่าเริ่มต้นคือ 75 อักขระ บันทึก: เอฟเอ็มที จริง ๆ แล้วจัดรูปแบบบรรทัดที่สั้นกว่าความกว้างที่ระบุเล็กน้อยเพื่อให้สามารถปรับสมดุลเส้นได้



พื้นที่ -p ตัวเลือกมีความน่าสนใจเป็นพิเศษ ด้วยวิธีนี้ เราสามารถจัดรูปแบบส่วนที่เลือกของไฟล์ได้ โดยที่บรรทัดที่จะจัดรูปแบบทั้งหมดจะเริ่มต้นด้วยลำดับอักขระเดียวกัน ภาษาโปรแกรมหลายภาษาใช้เครื่องหมายปอนด์ (#) เพื่อระบุจุดเริ่มต้นของความคิดเห็น จึงสามารถจัดรูปแบบได้โดยใช้ตัวเลือกนี้ มาสร้างไฟล์ที่จำลองโปรแกรมที่ใช้ความคิดเห็น:



[me@linuxbox ~]$ แมว > fmt-code.txt

# ไฟล์นี้มีโค้ดพร้อมความคิดเห็น


#บรรทัดนี้เป็นคอมเมนต์

#ตามด้วยคอมเมนต์อีกบรรทัด

# เเละอีกอย่าง.


ในทางกลับกันนี่คือบรรทัดของรหัส และโค้ดอีกบรรทัด

เเละอีกอย่าง.

[me@linuxbox ~]$ แมว > fmt-code.txt

# ไฟล์นี้มีโค้ดพร้อมความคิดเห็น


#บรรทัดนี้เป็นคอมเมนต์

#ตามด้วยคอมเมนต์อีกบรรทัด

# เเละอีกอย่าง.


ในทางกลับกันนี่คือบรรทัดของรหัส และโค้ดอีกบรรทัด

เเละอีกอย่าง.


ไฟล์ตัวอย่างของเรามีความคิดเห็นที่ขึ้นต้นด้วยสตริง “# “ (# ตามด้วยช่องว่าง) และบรรทัดของ “code” ซึ่งไม่มี ตอนนี้ใช้ เอฟเอ็มทีเราสามารถจัดรูปแบบความคิดเห็นและปล่อยให้โค้ดไม่ถูกแตะต้อง:



[me@linuxbox ~]$ fmt -w 50 -p '#' fmt-code.txt

# ไฟล์นี้มีโค้ดพร้อมความคิดเห็น


#บรรทัดนี้เป็นคอมเมนต์ ตามมาด้วยอีกคน

#คอมเม้นท์ไลน์. เเละอีกอย่าง.


ในทางกลับกันนี่คือบรรทัดของรหัส และโค้ดอีกบรรทัด

เเละอีกอย่าง.

[me@linuxbox ~]$ fmt -w 50 -p '#' fmt-code.txt

# ไฟล์นี้มีโค้ดพร้อมความคิดเห็น


#บรรทัดนี้เป็นคอมเมนต์ ตามมาด้วยอีกคน

#คอมเม้นท์ไลน์. เเละอีกอย่าง.


ในทางกลับกันนี่คือบรรทัดของรหัส และโค้ดอีกบรรทัด

เเละอีกอย่าง.


โปรดสังเกตว่าบรรทัดความคิดเห็นที่อยู่ติดกันจะถูกเชื่อมเข้าด้วยกัน ในขณะที่บรรทัดว่างและบรรทัดที่ไม่ได้ขึ้นต้นด้วยคำนำหน้าที่ระบุจะถูกรักษาไว้


ระบบปฏิบัติการคลาวด์คอมพิวติ้งยอดนิยมที่ OnWorks: