দ্রুত উত্তর
sed ':a;N;$!ba;s/\n/ /g' file
- : একটি 'একটি' লেবেল তৈরি
- প্যাটার্ন স্পেসে পরবর্তী পংক্তিতে এন যুক্ত করুন
- $! না শেষ লাইনটি যদি , বিএ শাখা ট্যাগ 'একটি' (যান)
- এর বিকল্প , / \ n / নতুন লাইনের জন্য রেইগেক্স , / / একটি স্পেস দ্বারা , / জি গ্লোবাল ম্যাচ (যতবার সম্ভব)
সেডটি শেষ লাইনে পৌঁছানো পর্যন্ত 1 থেকে 3 ধাপে লুপ করবে, সমস্ত রেখাকে প্যাটার্ন স্পেসে ফিট করে যেখানে সেড সমস্ত characters n অক্ষরকে প্রতিস্থাপন করবে
বিকল্প
প্রক্রিয়া শুরু করার জন্য শেডের বিপরীতে সমস্ত বিকল্পের শেষ লাইনে পৌঁছানোর প্রয়োজন হবে না
সঙ্গে ব্যাশ , ধীর
while read line; do printf "%s" "$line "; done < file
সঙ্গে Perl , sed -একটি গতি
perl -p -e 's/\n/ /' file
সঙ্গে TR , দ্রুত চেয়ে sed , এক অক্ষর দ্বারা প্রতিস্থাপন করতে পারেন শুধুমাত্র
tr '\n' ' ' < file
সঙ্গে পেস্ট , TR -একটি গতি, একটি অক্ষর দ্বারা প্রতিস্থাপন করতে পারেন শুধুমাত্র
paste -s -d ' ' file
সঙ্গে awk , TR -একটি গতি
awk 1 ORS=' ' file
"ইকো $ (<ফাইল)" এর মতো অন্যান্য বিকল্প ধীর গতিতে কেবল ছোট ফাইলগুলিতে কাজ করে এবং প্রক্রিয়া শুরু করতে পুরো ফাইলটি প্রক্রিয়া করা প্রয়োজন।
5.10। আমি কেন escape n অব্যাহতি
ক্রমটি ব্যবহার করে একটি নতুন লাইন মিলিয়ে বা মুছতে পারি না ? আমি কেন or n ব্যবহার করে 2 বা ততোধিক লাইন মিলাতে পারি না?
Line n কখনই লাইনের শেষে লাইনের সাথে মিলবে না কারণ
লাইনটি
প্যাটার্ন স্পেসে রাখার আগেই নতুন লাইনটি সর্বদা ছিটকে যায় stri প্যাটার্ন স্পেসে 2 বা ততোধিক লাইন পেতে,
'এন' কমান্ড বা অনুরূপ কিছু ব্যবহার করুন (যেমন 'এইচ; ...; জি;')।
শেড এর মতো কাজ করে: সেড একবারে একটি লাইন পড়ে,
সমাপ্তি নিউলাইনটি বন্ধ করে দেয়, যা প্যাটার্ন স্পেসে রেখে যায়
সেটিকে যেখানে সেড স্ক্রিপ্টটি সম্বোধন করতে বা পরিবর্তন করতে পারে, এবং যখন প্যাটার্ন স্পেসটি
মুদ্রিত হয়, তখন স্টডআউটে একটি নতুন লাইন যুক্ত হয় (বা একটি ফাইলে) যদি
প্যাটার্ন স্পেসটি পুরোপুরি বা আংশিকভাবে 'd' বা 'ডি' দিয়ে মুছে ফেলা হয় তবে এ জাতীয় ক্ষেত্রে
নিউলাইন যুক্ত করা হয় না । সুতরাং, স্ক্রিপ্ট পছন্দ
sed 's/\n//' file # to delete newlines from each line
sed 's/\n/foo\n/' file # to add a word to the end of each line
কখনও কাজ করবে না, কারণ
লাইনটি প্যাটার্ন স্পেসে রাখার আগেই অনুসরণ করা নিউলাইনটি সরানো হবে
। উপরের কাজগুলি সম্পাদন করতে,
পরিবর্তে এই স্ক্রিপ্টগুলির মধ্যে একটি ব্যবহার করুন:
tr -d '\n' < file # use tr to delete newlines
sed ':a;N;$!ba;s/\n//g' file # GNU sed to delete newlines
sed 's/$/ foo/' file # add "foo" to end of each line
যেহেতু GNU সেড ব্যতীত সেডের অন্যান্য সংস্করণগুলির
প্যাটার্ন বাফারের আকারের সীমা রয়েছে , তাই ইউনিক্স 'টিআর' ইউটিলিটিটি এখানে অগ্রাধিকার দেওয়া উচিত।
যদি ফাইলের শেষ লাইনে একটি নতুন লাইন থাকে তবে জিএনইউ সেড
সেই আউটপুটটিতে সেই নতুন লাইন যুক্ত করবে তবে অন্য সমস্ত মুছে ফেলবে, অন্যদিকে টিআর সমস্ত নতুনলাইন
মুছে ফেলবে।
দুটি বা ততোধিক লাইনের ব্লকের সাথে মিল রাখতে, এখানে 3 টি প্রাথমিক পছন্দ রয়েছে:
(1) প্যাটার্ন স্পেসে নেক্সট লাইন যুক্ত করতে 'এন' কমান্ডটি ব্যবহার করুন;
(২)
হোল্ড স্পেসে বর্তমান লাইনটি যুক্ত করতে কমপক্ষে দুবার 'এইচ' কমান্ডটি ব্যবহার করুন , এবং তারপরে হোল্ড স্পেস থেকে
এক্স, জি, বা জি দিয়ে লাইনগুলি পুনরুদ্ধার করুন ; অথবা (3)
দুটি নির্দিষ্ট ঠিকানার মধ্যে লাইন মেলে অ্যাড্রেস রেঞ্জগুলি (উপরের অংশ 3.3 দেখুন) ব্যবহার করুন ।
পছন্দগুলি (1) এবং (2) প্যাটার্ন স্পেসে একটি put n স্থাপন করবে, যেখানে এটি
পছন্দসই হিসাবে সম্বোধন করা যেতে পারে ('s / ABC \ nXYZ / বর্ণমালা / ছ')।
লাইনের একটি ব্লক মুছে ফেলার জন্য 'এন' ব্যবহারের একটি উদাহরণ বিভাগে প্রকাশিত হয়েছে 4.13
("আমি কীভাবে নির্দিষ্ট ধারাবাহিক লাইনের একটি ব্লক মুছব?")।
মুছা কমান্ডকে
'পি' (মুদ্রণ), 'আই' (সন্নিবেশ), 'সি' (পরিবর্তন), 'এ' (সংযোজন),
বা 'এস' (বিকল্প) এর মতো মুছুন আদেশটি অন্য কোনও কিছুতে পরিবর্তন করে এই উদাহরণটি পরিবর্তন করা যেতে পারে can ।
পছন্দ (3) প্যাটার্ন স্পেসে কোনও \ n রাখবে না, তবে এটি
ধারাবাহিক লাইনের একটি ব্লকের সাথে
মেলে, তাই এটি
এমনও হতে পারে যে আপনি যা সন্ধান করছেন তা সন্ধান করার জন্য আপনার এমনকি need n এরও প্রয়োজন নেই। যেহেতু GNU
সেড সংস্করণ 3.02.80 এখন এই বাক্য গঠনটিকে সমর্থন করে:
sed '/start/,+4d' # to delete "start" plus the next 4 lines,
/তিহ্যবাহী '/ এখান থেকে /, / সেখানে / {...}' ব্যাপ্তি
ঠিকানাগুলি ছাড়াও পুরোপুরি \ n এর ব্যবহার এড়ানো সম্ভব হতে পারে।
tr
কাজের জন্য কেবল সঠিক হাতিয়ার যদি কোনও একক চরিত্রের জন্য একটি একক চরিত্রের প্রতিস্থাপন করা হয়, যখন উপরের উদাহরণগুলি শুরুর সাথে একটি নতুন স্থানকে একটি স্থানের সাথে প্রতিস্থাপন করে .. সুতরাং উপরের উদাহরণে, টিআর কাজ করতে পারে .. তবে পরে এটি সীমাবদ্ধ থাকবে।