emacs

2011-10-07 11 views
7

का उपयोग कर टेक्स्ट फ़ाइल में अदृश्य वर्णों को कैसे ढूंढें और हटाएं मेरे पास कॉपीिंग नामक एक txt फ़ाइल है जिसे विंडोज़ पर संपादित किया गया है। इसमें विंडोज स्टाइल ईओएलemacs

$ file COPYING 
COPYING: ASCII English text, with CRLF line terminators 

मैंने इसे dos2unix का उपयोग करके यूनिक्स शैली में बदलने की कोशिश की। नीचे दिए गए आउटपुट

$ dos2unix COPYING 
dos2unix: Skipping binary file COPYING 

मुझे लगता है कि dos2unix कार्यक्रम आश्चर्य हुआ एक बाइनरी फ़ाइल के रूप में यह रिपोर्ट है। फिर कुछ अन्य संपादक (emacs नहीं) का उपयोग करके मैंने पाया कि फ़ाइल में एक नियंत्रण चरित्र है। मुझे emacs का उपयोग कर फ़ाइल में सभी अदृश्य वर्णों को खोजने में दिलचस्पी है।

मैं निम्नलिखित समाधान जो टीआर

tr -cd '\11\12\40-\176' < file_name 

Emacs तरह से भी ऐसा ही करने के लिए उपयोग करता पाया है googling द्वारा। मैंने हेक्सल-मोड की कोशिश की। हेक्सल-मोड एक एकल बफर में टेक्स्ट और उनके संबंधित एसीआईआई मान दिखाता है जो बहुत अच्छा है। 11-12, 40-176 (यानी टैब, स्थान और दृश्यमान वर्ण) के अलावा ASCII मान वाले वर्णों को कैसे खोजें। मैंने उस खोज के लिए नियमित अभिव्यक्ति बनाने की कोशिश की, लेकिन यह काफी जटिल है।

उत्तर

2

Emacs डिफ़ॉल्ट रूप से किसी भी चरित्र को छिपाएगा नहीं। प्रेस Ctrl +मेटा + %, या Esc तो Ctrl +% यदि पूर्व यदि आप पसंद अपनी उंगलियों, या M-x replace-regexp RET पर बहुत कठिन है। फिर, नियमित अभिव्यक्ति के लिए,

[^@-^H^K-^_^?] 

दर्ज हालांकि, जहां मैं ^H लिखा था, प्रकार Ctrl +क्यू तो Ctrl +एच, एक "नियंत्रण-एच 'वर्ण दर्ज करने का शाब्दिक, और इसी तरह दूसरों के लिए।आप ^@ के लिए Ctrl +दबा सकते हैं क्यू तो Ctrl +अंतरिक्ष, और आमतौर पर Ctrl +क्यू तो ^? के लिए बैकस्पेस। खाली स्ट्रिंग द्वारा इस नियमित अभिव्यक्ति की सभी घटनाओं को बदलें।

चूंकि आपके पास Emacs में फ़ाइल खुलती है, इसलिए आप इसके लाइन अंत में बदल सकते हैं। प्रेस C-x RET f (Ctrl +एक्सवापसीएफ) और us-ascii-unix फ़ाइल के लिए नए वांछित एन्कोडिंग के रूप में दर्ज करें।

+0

उत्तर के लिए धन्यवाद। मैं समझना चाहता था कि नियमित अभिव्यक्ति क्या करती है। मैंने "वर्णन-चरित्र-सेट" आदेश टाइप किया, फिर चरित्र सेट देखने के लिए "ascii" चुना। क्या आप कृपया बता सकते हैं कि आपने सी-जे को क्यों याद किया और सी- दस्तावेज है –

+0

@Talespin_Kit 'C-i' टैब है, 'सी-जे' नई लाइन है। – Gilles

+0

यह लिंक http://www2.lib.uchicago.edu/keith/tcl-course/emacs-tutorial.html कहता है सी-एम आरईटी कुंजी के लिए है। मैं उस दस्तावेज़ को खोजने में सक्षम नहीं हूं जहां सी-? दस्तावेज है क्या आप इसे इंगित कर सकते हैं। –

0

M-x set-buffer-file-coding-system देखें। प्रलेखन से:

(set-buffer-file-coding-system CODING-SYSTEM &optional FORCE NOMODIFY)

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

तो, डॉस से यूनिक्स, M-x set-buffer-file-coding-system unix पर जा रहा है।

10

अदृश्य वर्ण देखने के लिए, आप whitespace-mode आज़मा सकते हैं। रिक्त स्थान और टैब एक अलग चेहरे में एक प्रतीक के साथ प्रदर्शित किया जाएगा। यदि कोडिंग सिस्टम स्वचालित रूप से डॉस के रूप में पहचाना जा रहा है (स्टेटस बार पर (DOS) दिखा रहा है), तो लाइन के अंत में कैरिज रिटर्न भी छुपाया जाएगा। यूनिक्स या बाइनरी (उदा। सी-एक्स आरईटी आर यूनिक्स) पर स्विच करने के लिए revert-buffer-with-coding-system चलाएं) और वे हमेशा ^M के रूप में दिखाई देंगे। बाइनरी कोडिंग सिस्टम किसी गैर-ASCII वर्णों को नियंत्रण वर्णों के रूप में भी प्रदर्शित करेगा।

+0

सभी वर्ण^एम के रूप में दिखाई नहीं देते हैं। मेरे पास एक बहुत बड़ी फाइल है, मैं कुछ पात्रों को^एल के रूप में देख सकता हूं। मुझे नहीं पता कि फाइल में ऐसे कितने पात्र हैं। मैं उन पात्रों को खोजना चाहता हूं। –

+0

मेटा-एक्स व्हाइटस्पेस-मोड यह है कि आप इस कमांड को अनलॉक कैसे करते हैं। – DragonLord