সেড: দুটি লাইন মেলে


11

আমার কাছে একটি পাঠ্য ফাইল রয়েছে, যেখানে রেকর্ডগুলি দুটি লাইনে বিভক্ত। আমি তাদের এক লাইনে রাখতে চাই। রেকর্ডগুলি দেখতে এমন কিছু দেখাচ্ছে:

2013-07-29
 apt-get install git
2013-07-29
 apt-get install rsync
2013-07-31
 apt-get install nmap
2013-08-02
 apt-get install cifs-utils
2013-08-05
 apt-get install telnet

আমি নিম্নলিখিত পেতে চাই:

2013-07-29 apt-get install git
2013-07-29 apt-get install rsync
2013-07-31 apt-get install nmap
2013-08-02 apt-get install cifs-utils
2013-08-05 apt-get install telnet

আমি চেষ্টা করেছি sed, তবে আমি দুটি লাইনের সাথে মেলে ধরতে পারছি না। কিছু কৌশল আছে sed, বা আরও ভাল সরঞ্জাম আছে?


আপনি দুটি লাইনের সাথে মিল রাখতে চাইছেন এমনটি কম মনে হচ্ছে এবং কোনও মিল খুঁজে পাওয়ার পরে আপনি আরও বেশি লাইনে যোগ দিতে চান। হ্যাঁ?
কুর্তেম

উত্তর:


13
sed 'N;s/\n/ /'
  • N প্যাটার্ন স্পেসে পরবর্তী ইনপুট লাইনে যোগ দেয়
  • s/\n/ / নতুন লাইনের প্রতিস্থাপন করে যা স্থানের সাথে রেখাগুলি পৃথক করে।

বা:

sed -n 'N;s/\n/ /;/regex/p'
  • -n শেষ কমান্ড হিসাবে প্যাটার্ন স্পেসের স্বয়ংক্রিয় মুদ্রণ অক্ষম করে
  • /regex/p রেগেক্সের সাথে মিলছে লাইনগুলি মুদ্রণ করে

ব্যবহার করুন gবদল যদি আপনি বেশি দুই লাইন যোগদান করছেন যেমন জন্য পরিবর্তক N;N;N;s/\n/ /g


মনে রাখবেন: সেড লাইনে কাজ করে! আমি যুগে যুগে sed 's/>\n</>,</'কাজ করার চেষ্টা করে কাটিয়েছি যতক্ষণ না বুঝলাম যে সেড এক সময় লাইনে কাজ করে। একটি দ্রুত duckduckgo অনুসন্ধান এবং @ পেটারফ আমাকে আমার বাকী চুলগুলি রাখার অনুমতি দিয়েছে
উত্তর-ব্র্যাডলি

6

মনে হয় apt-getরেখাগুলির পূর্ববর্তী সাদা স্থান রয়েছে। এই মর্মে যে

sed -e :a -e '$!N;s/\n / /;ta' -e 'P;D' inputfile

কাঙ্ক্ষিত ফলাফল উত্পাদন করা উচিত।

বিকল্পভাবে, আপনি এটি ব্যবহার করতে পারেন paste:

paste -d' ' - - < inputfile
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.