sed
আপনি সহ একটি স্লাইডিং উইন্ডো করতে পারেন।
sed '1N;$!N;/141.299.99.1/P;D'
এটা করে। তবে সাবধান থাকুন - উদ্ধৃত হওয়ার পরেওbash
সম্প্রসারণের উন্মাদ আচরণ !
!!! আপনার কমান্ড ইতিহাস থেকে কমান্ড স্ট্রিং এ এটি কিছুটা ক্রেজি হতে পারে। set +H;
আপনি যদি কেসটি খুঁজে পান তবে কমান্ডটির সাথে প্রিফিক্স করুন । এরপরে এটি পুনরায় সক্ষম করতে (তবে কেন ???) করুন set -H
।
যে, অবশ্যই, শুধুমাত্র প্রযোজ্য হবে যদি আপনি সেটা ব্যবহার bash
- যদিও আমি বিশ্বাস করি না আপনি। আমি মোটামুটি নিশ্চিত যে আপনি কাজ করছেন csh
- (যা এমন শেল যা এর উন্মাদ আচরণ bash
ইতিহাস প্রসারণের সাথে অনুকরণ করে, তবে সি শেলটি যে চূড়ান্তভাবে গ্রহণ করেছে তা নাও হতে পারে) । সুতরাং সম্ভবত একটি \!
কাজ করা উচিত। আমি আশা করি.
এটি সমস্ত বহনযোগ্য কোড: পসিক্স তার তিনটি অপারেটরকে এভাবে বর্ণনা করে: (যদিও এটি লক্ষণীয় যে আমি কেবল 2001 এর প্রথম দিকে এই বিবরণটির অস্তিত্বই নিশ্চিত করেছি)
[2addr]N
আসল উপাদানটি মূল উপাদান থেকে পৃথক করতে \n
এম্বেডড \n
ইওলাইনটি ব্যবহার করে, নিদর্শন জায়গাতে
কম ইনপুট পরবর্তী লাইন যুক্ত করুন termin নোট করুন যে বর্তমান লাইন নম্বর পরিবর্তন হয়।
[2addr]P
\n
স্ট্যান্ডার্ড আউটপুটটিতে
প্রথম ewline অবধি প্যাটার্ন স্পেসটি লিখুন ।
[2addr]D
প্রথম \n
ewline মাধ্যমে প্যাটার্ন স্পেসের প্রাথমিক বিভাগটি মুছুন এবং পরবর্তী চক্রটি শুরু করুন।
সুতরাং প্রথম লাইনে আপনি প্যাটার্ন স্পেসে একটি অতিরিক্ত রেখা যুক্ত করুন, সুতরাং এটি দেখতে এটির মতো দেখাচ্ছে:
^line 1s contents\nline 2s contents$
তারপরে প্রথম লাইন এবং তার পরে প্রতিটি লাইনে - একেবারে শেষ ব্যতীত - আপনি প্যাটার্ন স্পেসে অন্য লাইন যুক্ত করেন । সুতরাং এটির মতো দেখাচ্ছে:
^line 1\nline 2\nline 3$
যদি আপনার আইপি ঠিকানাটি খুঁজে পাওয়া যায় তবে আপনাকে P
প্রথম নতুন লাইনটি ছড়িয়ে দেওয়া হয়েছে, সুতরাং এখানে 1 লাইন করুন। প্রতিটি চক্র শেষে আপনি D
একই একাদশ এবং যা অবশিষ্ট আছে তা দিয়ে শুরু করুন। এরপরের চক্রটি দেখে মনে হচ্ছে:
^line 2\nline 3\nline 4$
... ইত্যাদি। যদি আপনার আইপিটি সেই তিনটির মধ্যে যে কোনও একটিতে পাওয়া যায় তবে প্রতিবার প্রিন্ট হয়ে যাবে। সুতরাং আপনি সবসময় কেবল তিনটি লাইন এগিয়ে থাকবেন।
এখানে একটি দ্রুত উদাহরণ। আমি শূন্যে শেষ হওয়া প্রতিটি সংখ্যার জন্য একটি তিন লাইনের বাফার মুদ্রণ করব:
seq 10 52 | sed '1N;$!N;/0\(\n\|$\)/P;D'
10
18
19
20
28
29
30
38
39
40
48
49
50
এটি আপনার মামলার চেয়ে একটু জটিল কারণ কারণ আপনার সমস্যার সাথে আরও সাদৃশ্যপূর্ণ হওয়ার জন্য আমাকে 0\n
নিউলাইন বা 0$
প্যাটার্ন স্পেসের শেষ থেকে শুরু করে বিকল্প হতে হয়েছিল - তবে এগুলির অ্যাঙ্কর দরকারের তুলনায় তারা কিছুটা আলাদা - যা করা এখন থেকে কিছুটা কঠিন হতে পারে since প্যাটার্ন-স্থান ক্রমাগত স্থানান্তর।
আমি 10 এবং 52 এর বিজোড় কেসগুলি ব্যবহার করে দেখিয়েছি যে যতক্ষণ না নোঙ্গর নমনীয় হয় ততক্ষণ আউটপুট। সম্পূর্ণরূপে বহনযোগ্যভাবে, আমি পরিবর্তে অ্যালগরিদমে গণনা করে এবং একই ফলাফলগুলি অর্জন করতে পারি:
seq 10 52 | sed '1N;$!N;/[90]\n/P;D'
এবং আমার উইন্ডোটি সীমাবদ্ধ করার সময় অনুসন্ধানটি প্রশস্ত করুন - 0 থেকে 9 এবং 0 এবং 3 লাইন থেকে দুটিতে।
যাই হোক, আপনি ধারণা পেতে।