लिनक्स पर फाइलों में फीड्स के लिए CRLF को लाइन में बदलने का सबसे अच्छा तरीका क्या है ?
मैंने sed कमांड देखी है , लेकिन क्या कुछ सरल है?
लिनक्स पर फाइलों में फीड्स के लिए CRLF को लाइन में बदलने का सबसे अच्छा तरीका क्या है ?
मैंने sed कमांड देखी है , लेकिन क्या कुछ सरल है?
जवाबों:
इस कमांड का उपयोग करें:
fromdos yourtextfile
दूसरी तरह के आसपास:
todos yourtextfile
ये कमांड टॉफ्रोडोस पैकेज (अधिकांश हालिया वितरण पर) में पाए जाते हैं , जो दो रैपर unix2dos और dos2unix प्रदान करता है जो एक ही नाम के पुराने यूनिक्स टूल की नकल करते हैं।
find . -name '*.txt' -print0 | xargs -null fromdos
का उपयोग करें dos2unix
।
dos2unix - DOS / MAC को UNIX पाठ फ़ाइल स्वरूप कनवर्टर
dos2unix [options] [-c convmode] [-o file ...] [-n infile outfile ...] Options: [-hkqV] [--help] [--keepdate] [--quiet] [--version]
मैं पर्ल पसंद करता हूं :
perl -lne 's/\r//g; print' winfile.txt > unixfile.txt
लेकिन यह मेरे उपयोगों के अनुकूल है, और मुझे याद रखना बहुत आसान है। सभी प्रणालियों में एक dos2unix कमांड नहीं है, लेकिन सबसे ज्यादा जिस पर मैं काम करता हूं वह एक पर्ल इंटरप्रेटर है।
एक और है recode , dos2unix और iconv के लिए एक शक्तिशाली प्रतिस्थापन; यह डेबियन रिपॉजिटरी में "रिकोड" पैकेज में उपलब्ध है:
recode ibmpc..lat1 winfile.txt # dos2unix
recode lat1..ibmpc unixfile.txt # unix2dos
के लिए awk प्रशंसकों:
awk '{ sub("\r$", ""); print }' winfile.txt > unixfile.txt
... और sed :
sed 's/\r$//' winfile.txt > unixfile.txt
और अब, हेक्स संपादक में सीआर के हाथ से हटाने के मुकाबले केवल थोड़ा-कम-दोषपूर्ण है, सीधे हमारे एक से एक stackoverflow.com दोस्तों , बीफ़ दुभाषिया के साथ प्रयोग करने योग्य (आपके अनुकूल पड़ोस डेबियन रिपॉजिटरी पर स्थित)।
में dos2unix dos2unix !
,[[->+>+<<]>>>,[<-------------[+++++++++++++.>>>]<[>>----------[>+++++++++++++.-------------]<++++++++++>]<<<<[-]>>>[-<<<+>>>]]<[-]<[-]<]++++++++++.
यह लिखने के लिए अपने जीवन के एक घंटे को बर्बाद करने के लिए jk के लिए बड़ा धन्यवाद!
मुझे लगता है कि आप उपयोग कर सकते हैं tr
, साथ ही (हालांकि मेरे पास कोई अजीब प्रारूप फाइलें नहीं हैं, जिस पर प्रयास करने के लिए):
tr -d '\r' < file1 > file2
मुझे बहुत आसान तरीका मिला… नैनो के साथ खुली फाइल: ## नैनो file.txt
बचाने के लिए Ctrl + O दबाएं, लेकिन Enter दबाने से पहले: Alt + D को betwen DOS और Unix / Linux लाइन-एंडिंग को टॉगल करने के लिए, या: Alt + M से betwen मैक और Unix / Linux लाइन-एंड को टॉगल करने के लिए तब सहेजें और एंटर करने के लिए Enter दबाएँ Ctrl + X छोड़ने के लिए।
Alt+d
। कभी-कभी Alt टर्मिनल प्रोग्राम द्वारा इंटरसेप्ट हो जाता है, इसलिए आप esc+d
इसके बजाय उपयोग कर सकते हैं ।
यदि आप GUI विधि चाहते हैं, तो केट पाठ संपादक का प्रयास करें (अन्य उन्नत पाठ संपादक भी इसे संभालने में सक्षम हो सकते हैं)। खोलें खोज / बदलें संवाद ( Ctrl+ R), और की जगह \r\n
के साथ\n
। (NB: आपको ड्रॉप डाउन से "रेगुलर एक्सप्रेशन" चुनने की ज़रूरत होगी और विकल्पों में से "सिलेक्शन केवल" का चयन रद्द करें।)
संपादित करें: या, अगर आप बस यूनिक्स प्रारूप करने के लिए परिवर्तित करना चाहते हैं, तो मेनू विकल्प का उपयोग Tools
> End of Line
> Unix
।
\r\n
से \n
तब कनवर्ट करना चाहते हैं तो खोज / प्रतिस्थापन का उपयोग करना याद रखना आसान है, जो ओएस का उपयोग करता है जो लाइन समाप्त होता है। ;)
इसे dos2unix.py Python स्क्रिप्ट में पेस्ट करें ।
#!/usr/bin/env python
"""\
convert dos linefeeds (crlf) to unix (lf)
usage: dos2unix.py <input> <output>
"""
import sys
if len(sys.argv[1:]) != 2:
sys.exit(__doc__)
content = ''
outsize = 0
with open(sys.argv[1], 'rb') as infile:
content = infile.read()
with open(sys.argv[2], 'wb') as output:
for line in content.splitlines():
outsize += len(line) + 1
output.write(line + '\n')
print("Done. Saved %s bytes." % (len(content)-outsize))
किसी भी मंच पर पायथन स्थापित के साथ काम करना चाहिए। पब्लिक डोमेन।
CR LF
जाग का LF
उपयोग करने के लिए :
awk -v RS='\r?\n' 1
command | awk -v RS='\r?\n' 1
awk -v RS='\r?\n' 1 filename
उपयोग उदाहरण:
echo -e 'foo\nbar\r\nbaz' | awk -v RS='\r?\n' 1 | hexdump -C
स्पष्टीकरण:
-v RS='\r?\n'
सेट चर रुपये ( इनपुट आर ecord रों eparator) करने के लिए \r?\n
, जिसका अर्थ है इनपुट पढ़ा जाता है लाइन द्वारा लाइन वामो (द्वारा अलग \n
) जो (हो सकता है ?
) सीआर से पहले आना ( \r
)।
1
स्क्रिप्ट awk निष्पादित है। एक स्क्रिप्ट के होते हैं condition { action }
। इस मामले में, 1
वह स्थिति है जो सत्य का मूल्यांकन करती है। कार्रवाई छोड़ी गई है, इसलिए डिफ़ॉल्ट कार्रवाई निष्पादित की जाती है, जिसका अर्थ है कि वर्तमान लाइन को प्रिंट करें (जिसे भी {print $0}
या बस के रूप में लिखा जा सकता है {print}
)।
LF
करने के लिए CR LF
: आप चर सेट कर सकते हैं ORS
( ओ utput आर ecord रों उत्पादन की लाइन समाप्त होता है को संशोधित करने के eparator)। उदाहरण:
echo -e 'foo\nbar\r\nbaz' | awk -v RS='\r?\n' -v ORS='\r\n' 1 | hexdump -C
मैंने इस स्क्रिप्ट का उपयोग उन फ़ाइलों के लिए किया है जिनकी मुझे विंडोज़ सिस्टम से एक यूनिक्स प्रणाली में आपातकालीन स्थानांतरण फ़ाइलों की आवश्यकता है।
find . -type f | xargs file | grep CRLF | cut -d: -f1 | xargs dos2unix
find . -type f
सभी फ़ाइलों को ढूँढता है, जिस निर्देशिका में आप कमांड से चला रहे हैं
xargs file
फ़ाइल का विश्लेषण प्राप्त करने के लिए इसे फ़ाइल प्रोग्राम में पास करें ।
grep CRLF
हम केवल उस फ़ाइल का आउटपुट चाहते हैं जो CRLF को दिखाता है।
cut -d: -f1
आउटपुट को रंग तक प्राप्त करें। बाकी को त्याग दो। हमें अब केवल एक फ़ाइल नाम होना चाहिए
xargs dos2unix
कार्यक्रम के लिए फ़ाइल नाम दर्रा dos2unix का उपयोग कर xargs ।