2012-09-17 44 views
8

मेरे पास एक बड़ी टेक्स्ट फ़ाइल है, जिसमें कई मिस/खराब वर्तनी वाले अंग्रेजी शब्द हैं। मैं लिनक्स में कमांड लाइन वर्तनी परीक्षक का उपयोग करके इस फ़ाइल को संपादित करने का एक तरीका ढूंढ रहा हूं। मुझे ऐसा करने के कुछ तरीके मिले, लेकिन मेरी खोजों के मुताबिक वे सभी एक इंटरेक्टिव तरीके से काम करते हैं। मेरा मतलब है, मिस/खराब वर्तनी वाले शब्द को देखते हुए, वे उपयोगकर्ता को कुछ सुधार सुझाते हैं और उन्हें उनमें से एक चुनना चाहिए। चूंकि मेरी फ़ाइल बड़ी है, और इसमें कई गलत शब्द हैं, इसलिए मैं इसे इस तरह से संपादित नहीं कर सकता। मैं वर्तनी-जांचकर्ता को बताने का एक तरीका ढूंढ रहा हूं जो पहले उम्मीदवार का उपयोग करके सभी गलत शब्दों को प्रतिस्थापित करता है। क्या ऐसा करने का कोई तरीका है? क्या (ए/हुन) वर्तनी के पास ऐसा करने का कोई विकल्प है?कमांड लाइन का उपयोग कर फ़ाइल की जांच करना, गैर-इंटरैक्टिव

सम्मान।

+0

जीएनयू Emacs वर्तनी जांच मोड जब से तुम replac कर सकते हैं बिल फिट करने के लिए लगता है ई सभी गलत वर्तनी घटनाओं को एक बार में। –

+0

तो, मुझे emacs में फ़ाइल खोलनी है? – Hakim

+0

हां, लेकिन केवल एक बार। –

उत्तर

5

आप हर गलत शब्द को बदलने के लिए इसकी जरूरत नहीं है, लेकिन बस त्रुटियों और एक गैर-सहभागी तरीके से प्रिंट सुझाव का कहना है, आप ispell उपयोग कर सकते हैं:

$ ispell -a < file.txt | grep ^\& > errors.txt 

मैं नहीं दुर्भाग्य से कर रहा हूँ किसी भी मानक लिनक्स उपयोगिता से अवगत है जो आप कमांड लाइन से अनुरोध कर रहे हैं, हालांकि उपरोक्त टिप्पणियों में emacs सुझाव करीब आता है।

5

आप इस तरह के आदेशों के साथ प्रयोग कर सकते हैं:

yes 0 | script -c 'ispell text.txt' /dev/null 

या:

yes 1 | script -c 'aspell check text.txt' /dev/null 

लेकिन ध्यान रखें कि परिणाम भी सरल बातों के लिए खराब हो सकते हैं:

$ echo The quik broown fox jmps over the laazy dogg > text.txt 
$ yes 0 | script -c 'ispell text.txt' /dev/null 
Script started, file is /dev/null 
Script done, file is /dev/null 
$ cat text.txt 
The quick brown fox amps over the lazy dog 

ऐसा लगता है कि एस्पेल के साथ भी बदतर है, इसलिए शायद इस्पेल के साथ जाना बेहतर है।

आपको script कमांड की आवश्यकता है क्योंकि ispell जैसे कुछ कमांड स्क्रिप्ट नहीं करना चाहते हैं। आम तौर पर आप पाइप एक कमांड को yes 0 के उत्पादन में "0" कुंजी हर समय मार अनुकरण लेकिन कुछ आदेश पटकथा की जा रही पता लगाने और मना करने के लिए सहयोग करने के लिए होगा:

$ yes 0 | ispell text.txt 
Can't deal with non-interactive use yet. 

सौभाग्य से वे script कमांड के साथ मूर्ख बनाया जा सकता:

$ yes 0 | script -c 'ispell text.txt' /dev/null 
Script started, file is /dev/null 
Script done, file is /dev/null 

आप/dev/बातिल के अलावा अन्य फ़ाइल का उपयोग कर सकते उत्पादन लॉग इन करने की:

$ yes 0 | script -c 'ispell text.txt' out.txt 
Script started, file is out.txt 
Script done, file is out.txt 
$ cat out.txt 
Script started on Tue 02 Feb 2016 09:58:09 PM CET 

Script done on Tue 02 Feb 2016 09:58:09 PM CET