एफएमटी - एक सरल टेक्स्ट फ़ॉर्मेटर
RSI fmt प्रोग्राम टेक्स्ट को भी मोड़ता है, और भी बहुत कुछ। यह या तो फ़ाइलें या मानक इनपुट स्वीकार करता है और टेक्स्ट स्ट्रीम पर पैराग्राफ़ फ़ॉर्मेटिंग करता है। मूल रूप से, यह रिक्त रेखाओं और इंडेंटेशन को संरक्षित करते हुए पाठ में पंक्तियों को भरता है और जोड़ता है।
प्रदर्शित करने के लिए, हमें कुछ पाठ की आवश्यकता होगी। आइए इनमें से कुछ उठाएं fmt जानकारी पृष्ठ:
`एफएमटी' निर्दिष्ट फ़ाइल तर्कों (या यदि कोई नहीं दिया गया है तो मानक इनपुट) से पढ़ता है, और मानक आउटपुट पर लिखता है।
डिफ़ॉल्ट रूप से, रिक्त पंक्तियाँ, शब्दों के बीच रिक्त स्थान और इंडेंटेशन हैं
`एफएमटी' निर्दिष्ट फ़ाइल तर्कों (या यदि कोई नहीं दिया गया है तो मानक इनपुट) से पढ़ता है, और मानक आउटपुट पर लिखता है।
डिफ़ॉल्ट रूप से, रिक्त पंक्तियाँ, शब्दों के बीच रिक्त स्थान और इंडेंटेशन हैं
आउटपुट में संरक्षित; विभिन्न इंडेंटेशन वाली क्रमिक इनपुट लाइनें जुड़ी नहीं हैं; टैब को इनपुट पर विस्तारित किया जाता है और आउटपुट पर पेश किया जाता है।
`एफएमटी' वाक्य के अंत में पंक्तियों को तोड़ने को प्राथमिकता देता है, और वाक्य के पहले शब्द के बाद या वाक्य के अंतिम शब्द से पहले पंक्ति टूटने से बचने की कोशिश करता है। एक "वाक्य विराम" को या तो पैराग्राफ के अंत या `.?!' में समाप्त होने वाले शब्द के रूप में परिभाषित किया गया है, इसके बाद दो रिक्त स्थान या पंक्ति के अंत में, किसी भी हस्तक्षेप करने वाले कोष्ठक या उद्धरण को अनदेखा किया जाता है। TeX की तरह, `fmt' लाइन ब्रेक चुनने से पहले पूरे "पैराग्राफ" पढ़ता है; एल्गोरिथ्म डोनाल्ड ई. नुथ और माइकल एफ. प्लास द्वारा "ब्रेकिंग पैराग्राफ इनटू लाइन्स" में दिए गए एल्गोरिदम का एक प्रकार है।
`सॉफ्टवेयर--अभ्यास और अनुभव' 11, 11 (नवंबर 1981), 1119-1184।
आउटपुट में संरक्षित; विभिन्न इंडेंटेशन वाली क्रमिक इनपुट लाइनें जुड़ी नहीं हैं; टैब को इनपुट पर विस्तारित किया जाता है और आउटपुट पर पेश किया जाता है।
`एफएमटी' वाक्य के अंत में पंक्तियों को तोड़ने को प्राथमिकता देता है, और वाक्य के पहले शब्द के बाद या वाक्य के अंतिम शब्द से पहले पंक्ति टूटने से बचने की कोशिश करता है। एक "वाक्य विराम" को या तो पैराग्राफ के अंत या `.?!' में समाप्त होने वाले शब्द के रूप में परिभाषित किया गया है, इसके बाद दो रिक्त स्थान या पंक्ति के अंत में, किसी भी हस्तक्षेप करने वाले कोष्ठक या उद्धरण को अनदेखा किया जाता है। TeX की तरह, `fmt' लाइन ब्रेक चुनने से पहले पूरे "पैराग्राफ" पढ़ता है; एल्गोरिथ्म डोनाल्ड ई. नुथ और माइकल एफ. प्लास द्वारा "ब्रेकिंग पैराग्राफ इनटू लाइन्स" में दिए गए एल्गोरिदम का एक प्रकार है।
`सॉफ्टवेयर--अभ्यास और अनुभव' 11, 11 (नवंबर 1981), 1119-1184।
हम इस टेक्स्ट को अपने टेक्स्ट एडिटर में कॉपी करेंगे और फ़ाइल को इस रूप में सेव करेंगे fmt-info.txt. अब, मान लीजिए कि हम इस पाठ को पचास अक्षर चौड़े कॉलम में फिट करने के लिए पुन: स्वरूपित करना चाहते थे। हम फ़ाइल को संसाधित करके ऐसा कर सकते हैं fmt और -w विकल्प:
[मुझे@लिनक्सबॉक्स ~]$ fmt -w 50 fmt-info.txt | सिर
`एफएमटी' निर्दिष्ट फ़ाइल तर्कों (या मानक इनपुट यदि) से पढ़ता है
कोई भी नहीं दिया गया है), और मानक आउटपुट पर लिखता है।
डिफ़ॉल्ट रूप से, रिक्त पंक्तियाँ, शब्दों के बीच रिक्त स्थान और इंडेंटेशन हैं
आउटपुट में संरक्षित; विभिन्न इंडेंटेशन वाली क्रमिक इनपुट लाइनें जुड़ी नहीं हैं; टैब को इनपुट पर विस्तारित किया जाता है और आउटपुट पर पेश किया जाता है।
[मुझे@लिनक्सबॉक्स ~]$ fmt -w 50 fmt-info.txt | सिर
`एफएमटी' निर्दिष्ट फ़ाइल तर्कों (या मानक इनपुट यदि) से पढ़ता है
कोई भी नहीं दिया गया है), और मानक आउटपुट पर लिखता है।
डिफ़ॉल्ट रूप से, रिक्त पंक्तियाँ, शब्दों के बीच रिक्त स्थान और इंडेंटेशन हैं
आउटपुट में संरक्षित; विभिन्न इंडेंटेशन वाली क्रमिक इनपुट लाइनें जुड़ी नहीं हैं; टैब को इनपुट पर विस्तारित किया जाता है और आउटपुट पर पेश किया जाता है।
ख़ैर, यह एक अजीब परिणाम है। शायद हमें वास्तव में यह पाठ पढ़ना चाहिए, क्योंकि यह बताता है कि क्या हो रहा है:
डिफ़ॉल्ट रूप से, रिक्त पंक्तियाँ, शब्दों के बीच रिक्त स्थान और इंडेंटेशन आउटपुट में संरक्षित होते हैं; विभिन्न इंडेंटेशन वाली क्रमिक इनपुट लाइनें जुड़ी नहीं हैं; टैब को इनपुट पर विस्तारित किया जाता है और आउटपुट पर पेश किया जाता है।
तो, fmt पहली पंक्ति के इंडेंटेशन को संरक्षित कर रहा है। सौभाग्य से, fmt इसे ठीक करने के लिए एक विकल्प प्रदान करता है:
[मुझे@लिनक्सबॉक्स ~]$ fmt -cw 50 fmt-info.txt
`एफएमटी' निर्दिष्ट फ़ाइल तर्कों (या यदि कोई नहीं दिया गया है तो मानक इनपुट) से पढ़ता है, और मानक आउटपुट पर लिखता है।
[मुझे@लिनक्सबॉक्स ~]$ fmt -cw 50 fmt-info.txt
`एफएमटी' निर्दिष्ट फ़ाइल तर्कों (या यदि कोई नहीं दिया गया है तो मानक इनपुट) से पढ़ता है, और मानक आउटपुट पर लिखता है।
डिफ़ॉल्ट रूप से, रिक्त पंक्तियाँ, शब्दों के बीच रिक्त स्थान और इंडेंटेशन आउटपुट में संरक्षित होते हैं; विभिन्न इंडेंटेशन वाली क्रमिक इनपुट लाइनें जुड़ी नहीं हैं; टैब को इनपुट पर विस्तारित किया जाता है और आउटपुट पर पेश किया जाता है।
`एफएमटी' वाक्य के अंत में पंक्तियों को तोड़ने को प्राथमिकता देता है, और वाक्य के पहले शब्द के बाद या उससे पहले पंक्ति टूटने से बचने की कोशिश करता है
एक वाक्य का अंतिम शब्द. एक "वाक्य विराम" को या तो पैराग्राफ के अंत या `.?!' में समाप्त होने वाले शब्द के रूप में परिभाषित किया गया है, इसके बाद दो रिक्त स्थान या पंक्ति के अंत में, किसी को भी अनदेखा किया जाता है।
हस्तक्षेप करने वाले कोष्ठक या उद्धरण। TeX की तरह,
`एफएमटी' लाइन ब्रेक चुनने से पहले पूरे "पैराग्राफ" पढ़ता है; एल्गोरिदम का एक प्रकार है
डोनाल्ड ई. नुथ और माइकल एफ. प्लास द्वारा "ब्रेकिंग पैराग्राफ इनटू लाइन्स" में दिया गया,
`सॉफ्टवेयर--अभ्यास एवं अनुभव' 11, 11
(नवंबर 1981), 1119-1184।
डिफ़ॉल्ट रूप से, रिक्त पंक्तियाँ, शब्दों के बीच रिक्त स्थान और इंडेंटेशन आउटपुट में संरक्षित होते हैं; विभिन्न इंडेंटेशन वाली क्रमिक इनपुट लाइनें जुड़ी नहीं हैं; टैब को इनपुट पर विस्तारित किया जाता है और आउटपुट पर पेश किया जाता है।
`एफएमटी' वाक्य के अंत में पंक्तियों को तोड़ने को प्राथमिकता देता है, और वाक्य के पहले शब्द के बाद या उससे पहले पंक्ति टूटने से बचने की कोशिश करता है
एक वाक्य का अंतिम शब्द. एक "वाक्य विराम" को या तो पैराग्राफ के अंत या `.?!' में समाप्त होने वाले शब्द के रूप में परिभाषित किया गया है, इसके बाद दो रिक्त स्थान या पंक्ति के अंत में, किसी को भी अनदेखा किया जाता है।
हस्तक्षेप करने वाले कोष्ठक या उद्धरण। TeX की तरह,
`एफएमटी' लाइन ब्रेक चुनने से पहले पूरे "पैराग्राफ" पढ़ता है; एल्गोरिदम का एक प्रकार है
डोनाल्ड ई. नुथ और माइकल एफ. प्लास द्वारा "ब्रेकिंग पैराग्राफ इनटू लाइन्स" में दिया गया,
`सॉफ्टवेयर--अभ्यास एवं अनुभव' 11, 11
(नवंबर 1981), 1119-1184।
काफी बेहतर। को जोड़कर -c विकल्प, अब हमारे पास वांछित परिणाम है।
एफएमटी के पास कुछ दिलचस्प विकल्प हैं:
तालिका 21-3: एफएमटी विकल्प
विकल्प विवरण
विकल्प विवरण
-c में संचालित मुकुट मार्जिन तरीका। यह पैराग्राफ की पहली दो पंक्तियों के इंडेंटेशन को सुरक्षित रखता है। बाद की पंक्तियों को दूसरी पंक्ति के इंडेंटेशन के साथ संरेखित किया गया है।
-p स्ट्रिंग केवल उपसर्ग से शुरू होने वाली पंक्तियों को ही प्रारूपित करें स्ट्रिंग. फ़ॉर्मेट करने के बाद, की सामग्री स्ट्रिंग प्रत्येक पुन: स्वरूपित पंक्ति के पूर्वलग्न होते हैं। इस विकल्प का उपयोग स्रोत कोड टिप्पणियों में पाठ को प्रारूपित करने के लिए किया जा सकता है। उदाहरण के लिए, कोई भी प्रोग्रामिंग भाषा या कॉन्फ़िगरेशन फ़ाइल जो किसी टिप्पणी को रेखांकित करने के लिए "#" वर्ण का उपयोग करती है, उसे निर्दिष्ट करके स्वरूपित किया जा सकता है -पी '# ' ताकि केवल टिप्पणियाँ ही प्रारूपित की जा सकें। नीचे उदाहरण देखें.
-s स्प्लिट-ओनली मोड। इस मोड में, लाइनें केवल निर्दिष्ट कॉलम चौड़ाई में फिट होने के लिए विभाजित की जाएंगी। लाइनें भरने के लिए छोटी लाइनें नहीं जोड़ी जाएंगी। कोड जैसे टेक्स्ट को फ़ॉर्मेट करते समय यह मोड उपयोगी होता है, जहां जुड़ना वांछित नहीं है।
-यू एक समान अंतर रखें. यह पारंपरिक "टाइपराइटर-" लागू होगा
शैली" पाठ को स्वरूपित करना। इसका अर्थ है शब्दों के बीच एक रिक्त स्थान और वाक्यों के बीच दो रिक्त स्थान। यह मोड "औचित्य" को हटाने के लिए उपयोगी है, अर्थात, वह पाठ जिसे बाएँ और दाएँ दोनों हाशिये पर संरेखण को बाध्य करने के लिए रिक्त स्थान के साथ जोड़ा गया है।
-w चौडाई किसी कॉलम में फ़िट होने के लिए टेक्स्ट को फ़ॉर्मेट करें चौडाई अक्षर विस्तृत. डिफ़ॉल्ट 75 अक्षर है. टिप्पणी: fmt वास्तव में लाइन संतुलन की अनुमति देने के लिए निर्दिष्ट चौड़ाई से थोड़ी छोटी लाइनों को प्रारूपित करता है।
RSI -p विकल्प विशेष रूप से दिलचस्प है. इसके साथ, हम किसी फ़ाइल के चयनित भागों को प्रारूपित कर सकते हैं, बशर्ते कि स्वरूपित की जाने वाली सभी पंक्तियाँ वर्णों के समान अनुक्रम से शुरू हों। कई प्रोग्रामिंग भाषाएं किसी टिप्पणी की शुरुआत को इंगित करने के लिए पाउंड चिह्न (#) का उपयोग करती हैं और इस प्रकार इस विकल्प का उपयोग करके इसे स्वरूपित किया जा सकता है। आइए एक फ़ाइल बनाएं जो टिप्पणियों का उपयोग करने वाले प्रोग्राम का अनुकरण करती है:
[मुझे@लिनक्सबॉक्स ~]$ बिल्ली > fmt-code.txt
# इस फ़ाइल में टिप्पणियों के साथ कोड है.
# यह पंक्ति एक टिप्पणी है.
# इसके बाद एक और टिप्पणी पंक्ति आई।
# और दुसरी।
दूसरी ओर, यह कोड की एक पंक्ति है। और कोड की एक और पंक्ति.
और दुसरी।
[मुझे@लिनक्सबॉक्स ~]$ बिल्ली > fmt-code.txt
# इस फ़ाइल में टिप्पणियों के साथ कोड है.
# यह पंक्ति एक टिप्पणी है.
# इसके बाद एक और टिप्पणी पंक्ति आई।
# और दुसरी।
दूसरी ओर, यह कोड की एक पंक्ति है। और कोड की एक और पंक्ति.
और दुसरी।
हमारी नमूना फ़ाइल में टिप्पणियाँ शामिल हैं जो स्ट्रिंग "#" (एक # के बाद एक स्थान) और "कोड" की पंक्तियों से शुरू होती हैं जो नहीं होती हैं। अब, प्रयोग कर रहे हैं fmt, हम टिप्पणियों को प्रारूपित कर सकते हैं और कोड को अछूता छोड़ सकते हैं:
[मुझे@लिनक्सबॉक्स ~]$ fmt -w 50 -p '#' fmt-code.txt
# इस फ़ाइल में टिप्पणियों के साथ कोड है.
# यह पंक्ति एक टिप्पणी है. दूसरे द्वारा अनुसरण किया गया
# टिप्पणी पंक्ति. और दुसरी।
दूसरी ओर, यह कोड की एक पंक्ति है। और कोड की एक और पंक्ति.
और दुसरी।
[मुझे@लिनक्सबॉक्स ~]$ fmt -w 50 -p '#' fmt-code.txt
# इस फ़ाइल में टिप्पणियों के साथ कोड है.
# यह पंक्ति एक टिप्पणी है. दूसरे द्वारा अनुसरण किया गया
# टिप्पणी पंक्ति. और दुसरी।
दूसरी ओर, यह कोड की एक पंक्ति है। और कोड की एक और पंक्ति.
और दुसरी।
ध्यान दें कि निकटवर्ती टिप्पणी पंक्तियाँ जुड़ गई हैं, जबकि रिक्त पंक्तियाँ और वे पंक्तियाँ जो निर्दिष्ट उपसर्ग से शुरू नहीं होती हैं, संरक्षित हैं।