अगर मैं विंडोज में बनाई गई फाइलों को खोलता हूं, तो लाइनें खत्म हो जाती हैं ^M
।
मैं इन वर्णों को एक साथ कैसे हटाऊं?
अगर मैं विंडोज में बनाई गई फाइलों को खोलता हूं, तो लाइनें खत्म हो जाती हैं ^M
।
मैं इन वर्णों को एक साथ कैसे हटाऊं?
जवाबों:
dos2unix एक कमांडलाइन यूटिलिटी है जो यह करेगी, या ^ M को इनपुट करने के :%s/^M//g
लिए Ctrl- v Ctrl- mका उपयोग करेगी , या आप कर सकते हैं :set ff=unix
और vim इसे आपके लिए करेंगे।
'फाइलफॉर्मैट' सेटिंग पर डॉक्स यहां हैं , और विम विकी का एक व्यापक पृष्ठ है, जिसका अंत रूपांतरणों के लिए है ।
वैकल्पिक रूप से, यदि आप फ़ाइलों को बहुत आगे पीछे करते हैं, तो आप उन्हें परिवर्तित नहीं करना चाहते हैं, बल्कि ऐसा करना चाहते हैं :set ff=dos
, इसलिए विम को पता होगा कि यह एक डॉस फ़ाइल है और लाइन अंत के लिए डॉस सम्मेलनों का उपयोग करें।
:%s/^M//g
होना चाहिए :%s/\r//g
, क्योंकि ^M
बस लाइन की शुरुआत में "मैच कैपिटल" एम "का मतलब है"।
:%s/\r//g
मेरे लिए काम करता है, चीयर्स @ ब्युनक
set ff=unix
कुछ भी नहीं है। शायद यह फ़ाइल को रूपांतरित करता है, लेकिन सभी ^M
वर्ण अभी भी हैं।
दृश्य में लाइन अंत बदलें:
:e ++ff=dos
:e ++ff=mac
:e ++ff=unix
इसे सेविंग ऑपरेशन के रूप में भी इस्तेमाल किया जा सकता है: (w अकेले स्क्रीन पर आपके द्वारा देखी गई लाइन एंडिंग का उपयोग करके बचत नहीं करेगा):
:w ++ff=dos
:w ++ff=mac
:w ++ff=unix
और आप इसे कमांड-लाइन से उपयोग कर सकते हैं:
for file in *.cpp
do
vi +':w ++ff=unix' +':q' "$file"
done
:w +ff=unix
यहाँ लिखे गए अन्य सामानों की तुलना में बहुत अच्छा है, और बैश स्क्रिप्ट एक अच्छा बोनस है।
:e
आदेशों मेरे Windows पर कुछ भी करने को विम स्थापित नहीं दिखाई देते। मेरा विचार अभी भी ^M
कोड दिखाता है ।
मैं आमतौर पर उपयोग करता हूं
:%s/\r/\r/g
जो थोड़ा अजीब लगता है, लेकिन जिस तरह से विम मेल खाता है, उसके कारण काम करता है। मुझे भी याद रखना आसान लगता है :)
:set ff=unix
, लेकिन आज मैंने जो फ़ाइल खोली है वह विशेष रूप से अजीब रही होगी। विम ने कहा कि यह पहले से ही था, fileformat=unix
लेकिन सभी लाइन अंत थे ^M
। इस समाधान ने मेरे लिए काम किया।
:%s/\r//g
इसके बजाय मेरे लिए काम करता है।
:%s/\r//g
है केवल विशेष रूप से मिश्रित मोड दोनों DOS- और UNIX- शैली नई-पंक्तियों की एक विषम मिश्रण भी फ़ाइल के लिए - सामान्य प्रयोजन समाधान। विहित समाधान (जैसे, :set ff=unix
, :e ++ff=unix
) एक ही न्यू लाइन शैली में वर्तमान बफर समाप्त होता है की हर पंक्ति मान। कभी-कभी वे करते हैं; कभी-कभी वे नहीं करते। क्यू की साधना।
मैं निम्नलिखित कमांड का उपयोग करना पसंद करता हूं:
:set fileformat=unix
आप अपनी फ़ाइल को Macintosh या MS-DOS / MS-Windows फ़ाइल कन्वेंशन में कनवर्ट करने के लिए उपयोग mac
या dos
क्रमशः कर सकते हैं । और यह कुछ भी नहीं करता है यदि फ़ाइल पहले से ही सही प्रारूप में है।
अधिक जानकारी के लिए, विम सहायता देखें:
:help fileformat
^M
चार चांद हैं।
set fileformat=unix
मेरे .vimrc फ़ाइल में जोड़ने से काम हुआ।
:set fileformat=unix
डॉस से यूनिक्स में बदलने के लिए।
से: http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix
[Esc]:% s / \ r $ //
@ https://gist.github.com/sparkida/7773170
find $(pwd) -type f -name "*.ext" | while read file; do sed -e 's/^M//g' -i "$file"; done;
ऊपर भी, जैसा कि ऊपर उल्लेख किया गया है ^ M = Ctrl+V+ Ctrl+M(केवल कैरेट टाइप न करें "^" प्रतीक और M)
dos2unix
सीधे फ़ाइल सामग्री को संशोधित कर सकते हैं।
आप इसे सीधे फ़ाइल पर उपयोग कर सकते हैं, जिसमें अस्थायी फ़ाइल पुनर्निर्देशन की कोई आवश्यकता नहीं है।
dos2unix input.txt input.txt
उपरोक्त मान लिया गया यूएस कीबोर्ड का उपयोग करता है। का प्रयोग करें -
ब्रिटेन कीबोर्ड का उपयोग करने 437 विकल्प।
dos2unix -437 input.txt input.txt
tr -d '\15\32' < winfile.txt > unixfile.txt
(देखें: http://kb.iu.edu/data/acux.html )
निम्न चरण डॉस के लिए फ़ाइल स्वरूप को यूनिक्स में बदल सकते हैं:
:e ++ff=dos Edit file again, using dos file format ('fileformats' is ignored).[A 1]
:setlocal ff=unix This buffer will use LF-only line endings when written.[A 2]
:w Write buffer using unix (LF-only) line endings.
संदर्भ: http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix
^ M को प्रदर्शित करने के बारे में टिप्पणी मेरे लिए काम की है। मेरे vi में "^ M" टाइप करने से कुछ नहीं मिला (नहीं मिला)। द CTRL+ V CTRL+M अनुक्रम पूरी तरह से हालांकि यह किया था।
मेरी वर्किंग सबस्टेशन की कमान थी
:%s/Ctrl-V Ctrl-M/\r/g
और यह मेरी स्क्रीन पर इस तरह दिखता था:
:%s/^M/\r/g
:%s
के बजाय :1,$s
। %
के लिए आशुलिपि है 1,$
।
मुझे बहुत आसान तरीका मिला: नैनो के साथ फाइल खोलें: nano file.txt
प्रेस CTRL+ Oको बचाने के लिए, लेकिन दबाने से पहले Enter, प्रेस: ALT+ Dto betwen DOS और Unix / Linux लाइन-एंडिंग्स टॉगल करें , या: ALT+ Mto betwen Mac और Unix / Linux लाइन-एंडिंग्स को टॉगल करें और फिर Enterसेव और CTRL+ Xछोड़ने के लिए दबाएँ ।
^M
अंत होता है। बचाने के लिए डॉस के रूप में सहेजें, हटाने के लिए लिनक्स के रूप में सहेजें। का उपयोग कर जाँच कर सकते हैंcat -v
आप उपयोग कर सकते हैं:
vim somefile.txt +"%s/\r/\r/g" +wq
या dos2unix utility
।
विम में, टाइप करें:
:w !dos2unix %
यह आपके वर्तमान बफ़र की सामग्री को dos2unix कमांड पर पाइप करेगा और वर्तमान सामग्रियों पर परिणाम लिखेगा। विम के बाद फ़ाइल को फिर से लोड करने के लिए कहेंगे
आमतौर पर इसके लिए एक dos2unix
कमांड है जिसका आप उपयोग कर सकते हैं, बस सुनिश्चित करें कि आप मैनुअल को पढ़ते हैं क्योंकि GNU और BSD संस्करण भिन्न होते हैं कि वे तर्कों से कैसे निपटते हैं।
बीएसडी संस्करण:
dos2unix $FILENAME $FILENAME_OUT
mv $FILENAME_OUT $FILENAME
GNU संस्करण:
dos2unix $FILENAME
वैकल्पिक रूप से, आप dos2unix
यहाँ प्रस्तावित किसी भी उत्तर के साथ अपना स्वयं का बना सकते हैं , उदाहरण के लिए:
function dos2unix(){
[ "${!}" ] && [ -f "{$1}" ] || return 1;
{ echo ':set ff=unix';
echo ':wq';
} | vim "${1}";
}
मुझे पता था कि मैंने इसे कहीं देखा होगा। यहाँ FreeBSD लॉगिन टिप है:
उन सभी ^ M वर्णों को DOS फ़ाइल से निकालने की आवश्यकता है? प्रयत्न
tr -d \\r < dosfile > newfile
-- Originally by Dru <genesis@istar.ca>
यह मेरा तरीका है। मैंने डॉस ईओएल में एक फ़ाइल खोली और जब मैं उस फाइल को सहेजता हूं जो स्वचालित रूप से यूआईएक्स ईओएल में बदल जाएगी
autocmd BufWrite * :set ff=unix
यदि आप विंडोज़ में नोटपैड या नोटपैड ++ में एक फ़ाइल बनाते हैं और इसे लिनक्स में लाते हैं और इसे vim द्वारा खोलते हैं, तो आपको प्रत्येक पंक्ति के अंत में ^ M दिखाई देगा। इसे दूर करने के लिए,
अपने लिनक्स टर्मिनल पर, टाइप करें
dos2unix filename.ext
यह आवश्यक जादू करेगा।
मैं ^ M की जगह पर नई सुर्खियाँ चाहता था। बचाव के लिए पर्ल:
perl -pi.bak -e 's/\x0d/\n/g' excel_created.txt
या stdout को लिखने के लिए:
perl -p -e 's/\x0d/\n/g' < excel_created.txt
hexdump -C badfile
और देखते हैं0x0d 0x0a
"\r\n"
कि आपकी समस्या है।