sed '5,${s/^$//; t delete; b end; : delete; d; : end;}' temp_spec.rb
সম্পাদনা 1:
আমি এই ব্যাখ্যা করার কথা, এইভাবে ...
এটি অযথা জটিল। আমি জানতাম না যে ঠিকানার ব্যাপ্তিগুলির মধ্যে অনুমতি রয়েছে {}
। সুতরাং আমাকে "খালি লাইনগুলি মুছুন" আলাদাভাবে প্রকাশ করতে হয়েছিল। কোর কমান্ডটি t
যা সেডের উপায় if ... then
। T
সহজ হত তবে কেবল জিএনইউ সেডের জন্য উপলব্ধ। আমি মানুষ পৃষ্ঠাটি উদ্ধৃত:
t লেবেল: / ইন / / বি / / / / / / / / / / / / /ীরা / তে / ল / র / - / - / - / - - - - / - / - / - / - / - / - / - / - / - / - / - / - / - / - / - / - / - / - / - / - / - / - / - / - / - / - / - / - / / / / / - / / / / / / - / - / / / / / / / = / / / / = / = / = / = + = + = / = / = / = / = / + / + / + + +] + থেকে শেষের ইনপুট লাইনটি পড়ার পরে এবং শেষ টি বা টি-এর কমান্ডের পরে / লেবেল থেকে শাখা; যদি লেবেল বাদ দেওয়া হয়, স্ক্রিপ্টের শেষে শাখা।
আমি বিখ্যাত s
কমান্ডকে গালি দিই । এটি কেবলমাত্র লাইনটি খালি কিনা তা পরীক্ষার পরিবর্তে কোনও কিছুই প্রতিস্থাপন করবে না। সুতরাং এটি খালি লাইন দ্বারা একটি ফাঁকা রেখা প্রতিস্থাপন করে (যে কোনওভাবেই লাইনটি মোছা হওয়ায় প্রতিস্থাপন হিসাবে কিছু ব্যবহার করতে পারে)।
যদি s
"প্রতিস্থাপন" করে থাকে তবে লাইনটি ফাঁকা। সেক্ষেত্রে কমান্ড d
কার্যকর করা হবে। নাহলে কিছুই করার নেই। t
কোনও s
ক্রিয়াকলাপের ক্ষেত্রে যেমন লাফ দেয় না b
স্ক্রিপ্টের শেষে যেতে আমার শাখা কমান্ডের প্রয়োজন । : label
শাখা লক্ষ্য। goto
আগের মতো অন্ধকার যুগে (যখন সেড আবিষ্কার করা হয়েছিল ... তে-হি)।
আরও একটি বিকল্প s
হ'ল সমস্ত খালি খালি লাইনগুলিকে "প্রতিস্থাপন" করা, s
আরও জটিল তবে কমান্ডটি আরও সহজ করে তোলে:
sed '5,${s/^\(..*\)$/\1/; t end; d; : end;}' input
^..*$
"" খালি খালি লাইন "এর \1
অর্থ এবং " প্রথম বন্ধনীগুলির সামগ্রী "means