অংশ 1
কেবল d
13 তম লাইনের একাদশ:
sed '13d' <file.txt
এবং উপরের পরিপূরকগুলি করার একটি সাধারণ উপায় হ'ল:
sed '13!d' <file.txt
অংশ ২
কারণ এটি করা যেতে পারে:
sed -n ':a;${P;q};N;4,$D;ba' <file.txt
নোটটি 4
আপনার প্রয়োজনীয় সংখ্যার চেয়ে বেশি Note সুতরাং আপনি যদি শেষ-দশম লাইনটি চান তবে এটি হবে 11
।
এর সাথে পরীক্ষা করা seq
:
$ seq 100 | sed -n ':a;${P;q};N;4,$D;ba'
98
$
চেষ্টা করার ব্যাখ্যা
:a # define label a
${ # match the last line
P # print the first line of the pattern space
q # quit
}
N # match all lines: append the next line to the pattern
4,${ # match the range of lines 4 to the end of the file
D # delete the first line of the pattern space
}
ba # match all lines: jump back to label a
গ্লেন জ্যাকম্যানের মূল্যবান সংযোজন:
এটি ছিল "কেবলমাত্র নবম লাইন"। এখানে "সমস্ত তবে নবম লাইন" রয়েছে:
sed -n ':a;${s/^[^\n]*\n//;p;q};N;4,${P;D};ba'
জিএনইউ \n
সেডের সাথে কাজ করে, ক্রমটি অন্যান্য শেডের সাথে কাজ নাও করতে পারে।
আমি বিএসডি সেড (ওএসএক্স) দিয়ে এটি চেষ্টা করে দেখেছি এটি উপরের ফর্মটিতে বেশিরভাগভাবে কাজ করে না। বিষয়গুলি হ'ল:
;
পৃথক রেখায় ব্যবহৃত সাধারণত কাজ করে বলে মনে হয় তবে লেবেলের পরে কাজ করে না
- বিএসডি সেডকে
;
এক-লাইন {}
কমান্ড গোষ্ঠীতে শেষ কমান্ডের পরে আবশ্যক বলে মনে হয় , যেখানে জিএনইউ সেড দেয় না
\n
সাধারণত নিয়মিত অভিব্যক্তির মধ্যে ব্যবহার করা যেতে পারে, তবে স্পষ্টতই []
বন্ধনী প্রকাশের মধ্যে নয় । সুতরাং নিউলাইনগুলি বাদ দিতে, আমরা [[:alnum:][:punct:][:graph:][:blank:]]
পরিবর্তে এর মতো কিছু ব্যবহার করতে পারি , যদিও এটি অন্যান্য অক্ষরগুলিকে বাদ দিতে পারে (বিশেষত অন্যান্য নিয়ন্ত্রণ অক্ষর)।
সুতরাং এটি একটি আরও প্ল্যাটফর্মের স্বাধীন সংস্করণে চেষ্টা:
sed -n ':a
${s/^[[:alnum:][:punct:][:graph:][:blank:]]*\n//p;q;};N;4,${P;D;};ba'
এটি ওএসএক্স এবং উবুন্টুর অধীনে কাজ করে বলে মনে হচ্ছে।
head
/tail
সমাধান অনেক ধীর একটি চেয়েsed
সমাধান। ধন্যবাদ যদিও.