এখানে একটি sedপদ্ধতির:
$ sed -nE '1s/.{11}(.{8}).*/\1/p; 3s/.{3}(.{4}).*/\1/p' file
Ethernet
t6 a
ব্যাখ্যা
-nশুষে স্বাভাবিক আউটপুট যাতে এটি শুধুমাত্র ছাপে যখন বলা (সাধারণ প্রত্যেক ইনপুট লাইন প্রিন্ট করতে হয়)। -Eবর্ধিত রেগুলার এক্সপ্রেশনের দেয়।
sedস্ক্রিপ্ট দুই কমান্ড, উভয় প্রতিকল্পন অপারেটর ব্যবহার আছে ( s/original/replacement/)। উইলটি কেবল 1s/.{11}(.{8}).*/\1/pপ্রথম লাইনে চলবে (এটিই কি 1sকরে) এবং লাইনটির প্রথম 11 টি অক্ষরের সাথে মিলবে ( .{11}), তারপরে এটি পরবর্তী 8 টি ক্যাপচার করবে ( (.{8}), প্রথম বন্ধনী একটি "ক্যাপচার গ্রুপ") এবং তারপরে বাকি সমস্ত কিছু থাকবে লাইনের শেষ ( .*)। এই সমস্ত ক্যাপচার গ্রুপে যা ছিল তা দিয়ে প্রতিস্থাপন করা হয়েছে ( \1; যদি দ্বিতীয় ক্যাপচার গ্রুপ থাকত তবে তা হবে \2ইত্যাদি)। অবশেষে, pশেষে ( s/foo/bar/p) প্রতিস্থাপনটি তৈরি করার পরে লাইনটি মুদ্রণের কারণ ঘটায়। এর ফলে কেবলমাত্র 8 টি অক্ষরের আউটপুট হচ্ছে।
দ্বিতীয় কমান্ডটি একই সাধারণ ধারণা ব্যতীত এটি কেবল ২ য় লাইনে চলবে ( 3s) এবং 4 টি অক্ষর 4 থেকে শুরু করবে।
আপনি একই জিনিসটি এর সাথেও করতে পারেন perl:
$ perl -ne 'if($.==1){s/.{11}(.{8}).*/\1/}
elsif($.==3){s/.{3}(.{4}).*/\1/}
else{next}; print; ' file
Ethernet
t6 a
ব্যাখ্যা
-neমানে হলো "লাইন দ্বারা ইনপুট ফাইল লাইন পড়া এবং স্ক্রিপ্ট দেওয়া প্রয়োগ -eপ্রতিটি লাইনে করতে। স্ক্রিপ্ট আগের মতই মৌলিক ধারণা। $.পরিবর্তনশীল তাই আমরা পরীক্ষা হলে লাইন সংখ্যা পারেন বর্তমান লাইন সংখ্যা ঝুলিতে 1বা 3, যদি সুতরাং, বিকল্পটি চালান, অন্যথায় এড়িয়ে যান Therefore সুতরাং printকেবলমাত্র এই দুটি লাইনের জন্য কেবল চালানো হবে যেহেতু অন্য সমস্ত এড়িয়ে চলে যাবে।
অবশ্যই, এটি পার্ল, সুতরাং টিমটোড্ডি :
$ perl -F"" -lane '$. == 1 && print @F[11..19]; $.==3 && print @F[3..6]' file
Ethernet
t6 a
ব্যাখ্যা
এখানে, এর -aঅর্থ "প্রদত্ত অক্ষরটিতে প্রতিটি ইনপুট লাইন বিভক্ত করুন -Fএবং অ্যারে হিসাবে সংরক্ষণ করুন @Fgiven প্রদত্ত চরিত্রটি খালি থাকায় এটি ইনপুট লাইনের প্রতিটি অক্ষরকে উপাদান হিসাবে সংরক্ষণ করবে @FThen অ্যারেগুলি 0প্রথম লাইনের জন্য এবং তৃতীয়টির জন্য 3-7- এ গণনা শুরু করে ।