লিনাক্সের ফাইলগুলিতে সিআরএলএফ এর লাইন ফিডে রূপান্তর করার সর্বোত্তম উপায় কী ?
আমি সেড কমান্ড দেখেছি , তবে এর চেয়ে সহজ কিছু আছে কি?
লিনাক্সের ফাইলগুলিতে সিআরএলএফ এর লাইন ফিডে রূপান্তর করার সর্বোত্তম উপায় কী ?
আমি সেড কমান্ড দেখেছি , তবে এর চেয়ে সহজ কিছু আছে কি?
উত্তর:
এই আদেশটি ব্যবহার করুন:
fromdos yourtextfile
অন্যান্য উপায়ে:
todos yourtextfile
এই কমান্ডগুলি টোফ্রোডস প্যাকেজটিতে পাওয়া গেছে (বেশিরভাগ সাম্প্রতিক বিতরণে), যা একই নামের পুরানো ইউনিক্স সরঞ্জামগুলির নকল করে এমন দুটি র্যাপার্স ইউনিক্স 2 ডস এবং ডস 2 ইউনিক্স সরবরাহ করে।
find . -name '*.txt' -print0 | xargs -null fromdos
ব্যবহার dos2unix
।
ডস 2 ইউনিক্স - ডক্স / ম্যাক থেকে ইউনিক্স টেক্সট ফাইল ফর্ম্যাট রূপান্তরকারী
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
তবে এটি আমার ব্যবহারগুলির পক্ষে উপযুক্ত এবং এটি আমার মনে রাখা খুব সহজ। সমস্ত সিস্টেমে ডস 2 ইউনিক্স কমান্ড নেই, তবে বেশিরভাগ ক্ষেত্রে আমি কাজ করি পার্ল ইন্টারপ্রেটার।
আরেকটি হল 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 's/\r$//' winfile.txt > unixfile.txt
এবং এখন, আমাদের একটি স্ট্যাকওভারফ্লো ডট কম বন্ধুদের সাথে সরাসরি কোনও হেক্স সম্পাদক থেকে সিআর'স মুছে ফেলার চেয়ে কিছুটা কম- সংশ্লেষিত , যা গরুর মাংসের দোভাষী দিয়ে (আপনার বন্ধুত্বপূর্ণ প্রতিবেশী দেবিয়ান সংগ্রহস্থলে অবস্থিত),
মস্তিষ্কে ডস 2 ইউনিক্স !
,[[->+>+<<]>>>,[<-------------[+++++++++++++.>>>]<[>>----------[>+++++++++++++.-------------]<++++++++++>]<<<<[-]>>>[-<<<+>>>]]<[-]<[-]<]++++++++++.
এটি লিখতে তাঁর জীবনের এক ঘন্টা নষ্ট করার জন্য জেকে ধন্যবাদ!
আমি বাশের উপর এটি করি :
cat cr_stuffed.file | tr -d \r > no_more_crs.file
আমি মনে করি আপনি এটিও ব্যবহার করতে পারবেন tr
(যদিও আমার কাছে মজাদার বিন্যাসের ফাইল নেই যা চেষ্টা করে দেখুন):
tr -d '\r' < file1 > file2
আমি একটি খুব সহজ উপায় খুঁজে পেয়েছি… ন্যানো দিয়ে ফাইল খুলুন: ## ন্যানো file.txt
সংরক্ষণের জন্য Ctrl + O টিপুন, তবে এন্টার টিপানোর আগে: বেটউইন ডস এবং ইউনিক্স / লিনাক্স লাইন-এন্ডিংস টগল করতে Alt + D বা: Alt + M বেটউইন ম্যাক এবং ইউনিক্স / লিনাক্স লাইন-এন্ডিং টগল করতে তারপরে এন্টার টিপুন এবং সংরক্ষণ করুন ছাড়তে Ctrl + X quit
Alt+d
। কখনও কখনও Alt টার্মিনাল প্রোগ্রাম দ্বারা আটকে যায়, আপনি esc+d
পরিবর্তে ব্যবহার করতে পারেন ।
আপনি যদি কোনও জিইউআই পদ্ধতি চান, কেট পাঠ্য সম্পাদকটি চেষ্টা করুন (অন্যান্য উন্নত পাঠ্য সম্পাদকরাও এটি পরিচালনা করতে সক্ষম হতে পারেন)। খুলুন খোঁজ / প্রতিস্থাপন করা কথোপকথন ( Ctrl+ + R), এবং প্রতিস্থাপন \r\n
সঙ্গে \n
। (এনবি: আপনাকে ড্রপ ডাউন থেকে "নিয়মিত অভিব্যক্তি" চয়ন করতে হবে এবং অপশনগুলি থেকে "কেবলমাত্র নির্বাচন" নির্বাচন না করা হবে need)
সম্পাদনা করুন: অথবা, যদি আপনি কেবল ইউনিক্স ফর্ম্যাটে রূপান্তর করতে চান, তাহলে মেনু বিকল্প ব্যবহার Tools
> End of Line
> Unix
।
\r\n
করতে চান \n
তবে অনুসন্ধান / প্রতিস্থাপন ব্যবহার করে কোন ওএস কোন লাইনটি শেষ করে তা মনে করার চেয়ে সহজ। ;)
এটিকে ডস 2 ইউনিক্স.পি পাইথন স্ক্রিপ্টে আটকান ।
#!/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
স্ক্রিপ্টটি হ'ল একটি স্ক্রিপ্ট থাকে condition { action }
। এই ক্ষেত্রে, 1
শর্তটি যা সত্যকে মূল্যায়ন করে। ক্রিয়াটি বাদ দেওয়া হয়েছে, সুতরাং ডিফল্ট ক্রিয়াটি কার্যকর করা হয় যার অর্থ বর্তমান লাইনটি মুদ্রণ করুন (যা এছাড়াও {print $0}
বা সরলভাবে লেখা যেতে পারে {print}
) print
LF
টু CR LF
: আউটপুটটির লাইন প্রান্তটি পরিবর্তন করতে আপনি ভেরিয়েবলটি সেট করতে পারেন ORS
( o utput r ecord s 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