उन फ़ाइलों से Ctrl-M कैसे हटाएं जहां dos2unix, perl, tr और sed मौजूद नहीं हैं?


9

मान लीजिए आप एक बहुत पुरानी यूनिक्स सर्वर पर काम कर रहे हैं जहां dos2unix, perl, tr, और sedमौजूद नहीं हैं। आप डॉस से फाइल को यूनिक्स फॉर्मेट में कैसे बदल सकते हैं ?


सीड की अनुमति है?
एलमार्को

@elmarco: नहीं :(
हेमंत

9
एक यूनिक्स सर्वर को कितना पुराना होना चाहिए trऔर sedक्या नहीं ? sedपुराना है ........ iirc,
xenoterracide

1
उस जैसी व्यवस्था पर उपलब्ध होगा exया edनहीं? अगर कोई नहीं है या मैं इसे यूनिक्स नहीं कहूंगा । trsed
मैटबिएन्को

3
नहीं sed? वास्तव में!? आउट ऑफ इंटरेस्ट, सिस्टम क्या है? जैसा कि गिल्स और मैटबियानको बताते हैं, यह शायद अभी भी edकम से कम होगा।
मिकेल

जवाबों:


12

मुझे लगता है कि आप लाइनों के अंत में कैरट-एम को हटाने की बात कर रहे हैं। आप ऐसा करने के लिए vi में खोज और प्रतिस्थापन का उपयोग कर सकते हैं।

Vi में मैं आमतौर पर करता हूं: (जहां "^" CTRL का प्रतिनिधित्व करता है):

:%s/^V^M//g

जो स्क्रीन पर दिखाता है:

:%s/^M//g

धन्यवाद कि काम किया :)। मुझे लगता है कि यह एक बहुत ही पोर्टेबल समाधान है।
हेमंत

4
आप फ़ाइल का उपयोग करने के लिए उसी चीज़ को w / आउट करने के लिए sed का उपयोग कर सकते हैं: sed -e '% s / ^ V ^ M // g' फ़ाइल नाम जो कि स्क्रीन पर sed e '% s / ^ के रूप में भी दिखाई देगा M // g 'फ़ाइल नाम सामान्य तौर पर, यदि आप इसे vim में खोज / बदल सकते हैं, तो कमांड वस्तुतः sed में समान है।
गाबा

2
@gabe: सेड सॉल्यूशन वास्तव में और भी ज्यादा पोर्टेबल है +1 :)
wzzrd

@wzzrd, sedऔर viदोनों POSIX द्वारा निर्दिष्ट हैं , और यह viआदेश किसी भी Vim एक्सटेंशन का उपयोग नहीं करता है।
वाइल्डकार्ड

@jjclarkson क्या करता है ^Vऔर '^ M' का मतलब है?
cakedude

6

बिना सर्वर trया sedवास्तव में पुराना होना चाहिए, या कुछ बुनियादी आदेशों को याद नहीं करना होगा। उम्मीद edहै कि वहाँ है; यह यूनिक्स पहले संस्करण में मौजूद था ।

ed /path/to/file
1,$s/^V^M$//
w
q

जहां ^V^Mटाइप करने का मतलब Ctrl+ Vतब Ctrl+ M(शाब्दिक लाइन फीड दर्ज करना) है। यदि आप जानते हैं कि सभी लाइनें सीआर एलएफ में समाप्त होती हैं, तो आप 1,$s/.$//इसके बजाय (प्रत्येक पंक्ति पर अंधाधुंध रूप से अंतिम चरित्र को हटा सकते हैं) का उपयोग कर सकते हैं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.