আপনি একটি বহিরাগত ফিল্টার হিসাবে Exব্যবহার করে একটি কমান্ড দিয়ে এটি করতে পারেন sed:
:%!sed -n 'h;n;G;h;n;G;h;n;G;p'
এই সংস্করণটি 4 এরও বেশি কোনও অতিরিক্ত লাইন উপেক্ষা (মুছে ফেলবে) 4 টিরও কম লাইনের (বিপরীত) রাখতে রাখতে ব্যবহার করুন:
:%!sed -n '$p;h;n;G;$p;h;n;G;$p;h;n;G;p'
%এখানে "বাফারে প্রতিটি লাইন।" অর্থ
!কমান্ড মানে হলো "ইনপুট হিসাবে নির্দিষ্ট লাইনের নিম্নলিখিত কমান্ড চালানোর জন্য, এবং প্রতিস্থাপন কমান্ডের আউটপুট নিদিষ্ট লাইন।" (এটিকে একটি ফিল্টার বলা হয়; বাছাইকরণের মতো জিনিসগুলির জন্য খুব সহজ, উদাহরণস্বরূপ, :%!sortআপনার ফাইলের সমস্ত লাইন :2,8!sortবাছাই করবে ; লাইন 2-8 ইত্যাদি বাছাই করবে)
sedএটি স্ট্রিম এডিটর টুল এবং এটি ইউনিক্সের মতো সমস্ত সিস্টেমে পাওয়া যায়। sedএখানে ব্যবহৃত মূল ধারণাগুলি হ'ল "প্যাটার্ন স্পেস" (যা পূর্বনির্ধারিতভাবে ইনপুটটির প্রতিটি লাইন থাকে পরিবর্তিতভাবে) এবং "হোল্ড স্পেস" (যেখানে আপনি sedঅন্য প্রক্রিয়াকরণের সময় সংরক্ষণ করার সময় অতিরিক্ত পাঠ্য আটকে রাখতে পারেন ইনপুট লাইন)।
-nsedপ্যাটার্ন স্পেস মুদ্রণের এর ডিফল্ট ক্রিয়াগুলি দমন করার জন্য কমান্ডের একটি বিকল্প (কারণ এই ক্ষেত্রে আমরা কেবল তখনই প্রিন্ট করতে চাই যখন আমরা স্পষ্টভাবে এটি বলি)
$pমধ্যে sedকমান্ড মানে হলো "আপনি শেষ লাইনে হন sedএর ইনপুট, মুদ্রণ (প্যাটার্ন স্থান)।"
h "" প্যাটার্ন স্পেস "এর বর্তমান বিষয়বস্তুগুলিকে 'হোল্ড স্পেসে' আটকে দিন, যা কিছু আছে তা ওভাররাইট করে।"
n মানে "ইনপুট থেকে পরবর্তী পংক্তির সাথে 'প্যাটার্ন স্পেস'-এর সামগ্রীগুলি প্রতিস্থাপন করুন"
G এর অর্থ "'প্যাটার্ন স্পেসে সংযুক্ত করুন:' হোল্ড স্পেস 'এর বিষয়বস্তুগুলির পরে একটি নতুন লাইন।"
সমস্ত একসাথে sedনিয়ে গেলে, কমান্ড চারটি আউটপুট আউটপুট সংরক্ষণ করে, যেমন এটি সংরক্ষণ করে এবং তারপরে তাদের মুদ্রণ করে। $pকমান্ড দ্বিতীয় সংস্করণে যোগ করে নিশ্চিত করুন যে ফাইলটি শেষ লাইন 4 লাইনের একটি একাধিক উপর ছাড়া অন্য উপনিত, লাইন এখনও ছাপা হয়।
কোনও বিকল্প, নির্দিষ্ট কোনও বৈশিষ্ট্য ব্যবহার না করে এবং বাহ্যিক ফিল্টার ব্যবহার না করেই বিকল্পের জন্য ইন্টারেক্টিভ পদ্ধতির জন্য:
:4
চতুর্থ লাইনে যেতে।
:.m -4 | +3m . | +2m . | +5
পূর্ববর্তী চারটি লাইন বিপরীতে (1-4) এবং আপনার কার্সারটি 8 নং লাইনে রেখে দিন।
.m -4চার লাইন পিছনে রেখার ঠিক পরে বর্তমান রেখাটি সরানো হয় (সরানো লাইনে কার্সারটি রেখে)।
+3m .কার্সারকে সরানো লাইনে রেখে বর্তমান লাইনের পরে 3 রেখার রেখাটি বর্তমান লাইনের ঠিক পরে স্থানান্তরিত করে। +2m .অবশ্যই একই কাজ করে।
+5 কার্সারটি যেখানে রয়েছে সেখান থেকে পাঁচটি রেখা নীচে রাখে।
পছন্দসই হিসাবে পুনরাবৃত্তি।
ভিমে আপনি এই পুরো কমান্ডটি দিয়ে পুনরায় পুনরায় পুনরায় করতে পারেন @:, তারপরে আবার পুনরাবৃত্তি করুন @@। পসিক্সে viবা exআপনাকে পাঠ্যের একটি লাইন হিসাবে সন্নিবেশ করাতে হবে :.m -4 | +3m . | +2m . | +5, এটি একটি নামযুক্ত বাফার (নিবন্ধক) এ মুছুন এবং তারপরে সেই নামযুক্ত বাফার (নিবন্ধক) চালাবেন।
সুতরাং exমোডে, কেবল POSIX- নির্দিষ্ট বৈশিষ্ট্যগুলি ব্যবহার করে ইন্টারেক্টিভ লাইনে বিপরীত করা এবং পাঠ্যটির 17 টি লাইন দিয়ে শুরু করা:
Entering Ex mode. Type "visual" to go to Normal mode.
:0a # Append following text after "line 0" (i.e. insert at start of file).
.m -4 | +3m . | +2m . | +5
. # End text insertion
:d k # Delete that line to register k
line1 # This is a printout of the current line
:4 # Move to line 4
line4
:@k # Execute register k to reverse lines 1-4
line8
:@@ # Execute register k again
line12
:@@ # Execute register k again
line16
:@@ # Execute register k again
line17
:%p # Print the whole buffer (just to see what was done)
line4
line3
line2
line1
line8
line7
line6
line5
line12
line11
line10
line9
line16
line15
line14
line13
line17
:wq # Save and quit
আরও পড়া: