সমস্ত বিষয় বিবেচনা করা হয়, পুরো ফাইলটি গবলিং করা দ্রুততম উপায় হতে পারে।
বেসিক সিনট্যাক্সটি নিম্নরূপ:
sed -e '1h;2,$H;$!d;g' -e 's/__YOUR_REGEX_GOES_HERE__...'
মনে রাখবেন, ফাইলটি প্রচণ্ড পরিমাণে বড় হলে পুরো ফাইলটি গব্জ করা কোনও বিকল্প হতে পারে না। এই জাতীয় ক্ষেত্রে, এখানে সরবরাহিত অন্যান্য উত্তরগুলি কাস্টমাইজড সমাধান দেয় যা একটি ছোট মেমরির পদক্ষেপে কাজ করার গ্যারান্টিযুক্ত।
অন্যান্য সমস্ত হ্যাক এবং স্ল্যাশ পরিস্থিতির জন্য, কেবলমাত্র -e '1h;2,$H;$!d;g'
আপনার মূল sed
রেজেক্স যুক্তি দ্বারা প্রিপেন্ডিংয়ের কাজটি বেশ কার্যকর হয়ে যায়।
যেমন
$ echo -e "Dog\nFox\nCat\nSnake\n" | sed -e '1h;2,$H;$!d;g' -re 's/([^\n]*)\n([^\n]*)\n/Quick \2\nLazy \1\n/g'
Quick Fox
Lazy Dog
Quick Snake
Lazy Cat
কি করে -e '1h;2,$H;$!d;g'
?
1
, 2,$
, $!
অংশের লাইন যে সীমা যা লাইন সরাসরি নিম্নলিখিত কমান্ড উপর সঞ্চালিত হয় specifiers হয়।
1
: প্রথম লাইন
2,$
: দ্বিতীয় থেকে শুরু সমস্ত লাইন
$!
: শেষ ছাড়া অন্য প্রতিটি লাইন
এতটা প্রসারিত, এন লাইনের ইনপুটগুলির প্রতিটি লাইনে এটিই ঘটে।
1: h, d
2: H, d
3: H, d
.
.
N-2: H, d
N-1: H, d
N: H, g
g
কমান্ড লাইন সুনির্দিষ্টভাবে উল্লেখ করা দেওয়া হয়, কিন্তু পূর্ববর্তী d
কমান্ড একটি বিশেষ ধারা আছে " স্টার্ট পরবর্তী চক্র। ", এবং বাধা দেয় g
গত ছাড়া সমস্ত লাইন চালু করা থেকে।
প্রতিটি আদেশের অর্থ হিসাবে:
- প্রথম
h
দ্বারা অনুসরণ H
প্রতিটি লাইনে কপি উপর গুলি মধ্যে ইনপুট লাইনের বলেন sed
'র হোল্ড স্থান । (যথেচ্ছ পাঠ্য বাফারটি ভাবুন))
- এরপরে,
d
প্রতিটি লাইনে এই লাইনগুলি আউটপুটে লেখা থেকে বিরত রাখতে বাতিল করে দেয়। হোল্ড স্থান তবে সংরক্ষিত হয়।
- শেষ
g
অবধি , সর্বশেষ লাইনে হোল্ড স্পেস থেকে প্রতিটি লাইন জমা হওয়া পুনরুদ্ধার করে যাতে sed
পুরো ইনপুটটিতে তার রেজেক্স চালাতে সক্ষম হয় (লাইন-এ-এ-টাইম ফ্যাশনের পরিবর্তে) এবং তাই সক্ষম \n
এস উপর ম্যাচ ।