विंडोज और यूनिक्स / लिनक्स प्रारूपों के बीच एक पाठ फ़ाइल में लाइन ब्रेक कैसे कन्वर्ट करें?


33

मैं विंडोज और यूनिक्स / लिनक्स प्रारूपों के बीच एक पाठ फ़ाइल में लाइन ब्रेक कैसे परिवर्तित करूं?

मेरे पास एक निक्स वातावरण है, लेकिन मुझे विंडोज-स्टाइल लाइन ब्रेक के साथ डेटा आयात और निर्यात करने की आवश्यकता है। मैंने सोचा कि ऐसा करने के लिए एक मानक उपयोगिता या कमांड होगी, लेकिन मैं इसे ढूंढ नहीं सकता।

जवाबों:


42

आप शायद के लिए देख रहे dos2unix, unix2dos, todosया fromdosअपनी वितरण पर निर्भर करता है। उबुन्टु / डेबियन पैकेज todos/ मेमोरी से टोफोडोस पैकेज के fromdosहिस्से के रूप में ।


4
मामले में किसी को भी विंडोज समाधान की तलाश में इस सवाल भर आता है, के लिए नदी के ऊपर साइट dos2unixहै waterlan.home.xs4all.nl/dos2unix.html , और यह अच्छी तरह से Windows में काम करता है।
Womble

आप Homebrew का उपयोग करके Mac OS X पर dos2unix/unix2dos स्थापित कर सकते हैं । Homebrew स्थापित के साथ, आदेश है जो उपयोग करता है, इस सूत्रbrew install dos2unix
रोरी ओ'केन

24

एक विकल्प कमांड लाइन पर unix2dos(और dos2unixवापस जाने के लिए) उपयोग करना है ।

एक अन्य टेक्स्ट एडिटर का उपयोग करना है:
vi :: के लिए ff = डॉस सेट करें लाइन एंडिंग्स को डॉस लाइन एंडिंग के रूप में सेट करें।
Emacs के लिए: Cx [ENTER] f डॉस [ENTER]

आपके पसंदीदा GUI आधारित संपादक (जैसे। Jedit) के लिए मैं मैनुअल या Google की जाँच करने की सलाह देता हूँ।

अंत में यदि आप एक टेक्स्ट एडिटर के साथ सौदा नहीं करना चाहते हैं और बस अधिक सामान्य उपयोगिताओं और इस तरह का उपयोग कर (या unix2dos स्थापित नहीं है):

tr -d '\r' < infile > outfileविंडोज से जाने के लिए -> यूनिक्स
awk 'sub("$", "\r")' unixfile.txt > winfile.txtसे जाने के लिए यूनिक्स -> विंडोज trयूनिक्स से विंडोज पर नहीं जा सकता है।


dos2unix ने ट्रिक बनाई, हालाँकि tr उपयोगिता के लिए धन्यवाद, यह अतीत में इतना समय बचा सकता था!
अलेक्सिट

एक फ़ाइल मिश्रित लाइन अंत है, तो उचित में लोड करने के लिए सुनिश्चित करें ff: :e ++ff=unix। कम से कम यह dos -> unixरूपांतरण के लिए समझ में आता है ।
एक्स-यूरी

उस जाग एक लाइनर एक आदमी को मछली सिखाना है, उसके लिए धन्यवाद। मैं भविष्य में थोड़ा कम भूखा रहूंगा
गारेथ डेविडसन

13

इसे विम में संपादित करें और set fileformatकमांड का उपयोग करें ।

  • एमएस-डॉस / विंडोज (सीआर + एलएफ ब्रेक) से * निक्स (एलएफ केवल ब्रेक)

    :set fileformat=unix
    :wq
    
  • * एमएस-डॉस / विंडोज के लिए निक्स

    :set fileformat=dos
    :wq
    

उपयोग करते समय सावधान रहें कि यदि फ़ाइल में पहले से ही अंतिम पंक्ति में लाइन ब्रेक नहीं है; vim एक जोड़ देगा जब तक आप नहीं जानते कि यह कैसे बताना है।
सीजरबी

हर दूसरे समाधान की कोशिश करने के घंटों के बाद मुझे यह जीवनसाथी चाहिए था। OS X Yosemite के साथ व्यवहार की पुष्टि hexdump -C- यह भी पुष्टि नहीं है कि यह चिपचिपा नहीं है - यह प्रति viसत्र निर्धारित है
Techmag

8

विंडोज को यूनिक्स लाइन के अंत में बदलने के लिए चीलियन के समान मैं यही उपयोग करता हूं:

tr -d \\015 < windows > unix

पोस्टर विंडोज लाइन एंडिंग के लिए यूनिक्स चाहता था। और आप जवाब देने में कुछ साल देर कर रहे हैं।
ott--

5
कौन परवाह करता है अगर यह "साल देर हो चुकी है"? यह अभी भी काम करता है, और यह अभी भी सवाल पर लागू है। मैं सिर्फ अपने जैसे पाठकों के लिए एक और विकल्प जोड़ रहा था। साथ ही, उसका प्रश्न विंडोज -> यूनिक्स के लिए पूछता है, और उसका विवरण यूनिक्स -> विंडोज के लिए पूछता है। श्रग
जोश

सही। हो सकता है कि आप तब यूनिक्स को विंडोज़ में बदलने के लिए दूसरे ट्राइ-कमांड को जोड़ दें।
ott-- 16

मैंने डाउनवोट को पूर्ववत करने की कोशिश की, लेकिन यह कहा कि यह लेख संपादित होने तक बंद है।
ott--

@ ott-- कोई बात नहीं, मैंने तुम्हारे लिए अपवित्र किया। ... रुको, अब मैं मेरे लिए अपवोट नहीं कर सकता! ...
खतरा

1

POSIX के साथ ऐसा करना मुश्किल है:

  • POSIX Sed समर्थन नहीं करता है \rया \15। यहां तक ​​कि अगर यह किया, जगह विकल्प -iमें POSIX नहीं है

  • POSIX Awk समर्थन करता है \rऔर \15, हालांकि -i inplaceविकल्प POSIX नहीं है

  • d2u और dos2unix POSIX उपयोगिताओं नहीं हैं , लेकिन पूर्व है

  • POSIX पूर्व का समर्थन नहीं करता \r, \15, \nया\12

कैरिज रिटर्न निकालने के लिए:

awk 'BEGIN{RS="\1";ORS="";getline;gsub("\r","");print>ARGV[1]}' file

गाड़ी का रिटर्न जोड़ने के लिए:

awk 'BEGIN{RS="\1";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.