একটি উপায় হবে:
$ perl -lne 's/^/\n/ if $.>1 && /^\d+/; printf "%s",$_' file
20141101 server contain dump
20141101 server contain nothing {uekdmsam ikdas jwdjamc ksadkek} ssfjddkc * kdlsdlsddsfd jfkdfk
20141101 server contain dump
তবে .এটি চূড়ান্ত নতুন লাইনটিও সরিয়ে দেয়। এটি আবার যুক্ত করতে, ব্যবহার করুন:
$ { perl -lne 's/^/\n/ if $.>1 && /^\d+/; printf "%s",$_' file; echo; } > new
ব্যাখ্যা
এটি -lট্রেলিং করা নতুনলাইনগুলি সরিয়ে ফেলবে (এবং প্রতিটি printকলটিতে আমি একটি যুক্ত করব যার কারণে আমি এর printfপরিবর্তে ব্যবহার করি , তারপরে, যদি বর্তমান লাইনটি সংখ্যাগুলির সাথে শুরু হয় /^\d+/) ( ) এবং বর্তমান লাইন নম্বরটি একের বেশি হয় ( $.>1, এটি অতিরিক্ত যুক্ত এড়াতে প্রয়োজন শুরুতে খালি লাইন), একটি যোগ \nলাইনের শুরুতে। printfপ্রতিটি লাইনে ছাপে।
বিকল্পভাবে, আপনি সমস্ত \nঅক্ষর এতে পরিবর্তন করতে পারেন \0, তারপরে \0সংখ্যার স্ট্রিংয়ের আগে যেগুলি সঠিক তা \nআবার পরিবর্তন করতে পারেন :
$ tr '\n' '\0' < file | perl -pe 's/\0\d+ |$/\n$&/g' | tr -d '\0'
20141101 server contain dump
20141101 server contain nothing {uekdmsam ikdas jwdjamc ksadkek} ssfjddkc * kdlsdlsddsfd jfkdfk
20141101 server contain dump
এটি কেবল 8 টি সংখ্যার স্ট্রিংয়ের সাথে মেলে তৈরি করতে, পরিবর্তে এটি ব্যবহার করুন:
$ tr '\n' '\0' < file | perl -pe 's/\0\d{8} |$/\n$&/g' | tr -d '\0'