উদাহরণস্বরূপ: 2048 অক্ষরের চেয়ে বেশি হলে আমি কীভাবে কোনও লাইন মুছতে পারি?
উদাহরণস্বরূপ: 2048 অক্ষরের চেয়ে বেশি হলে আমি কীভাবে কোনও লাইন মুছতে পারি?
উত্তর:
sed '/^.\{2048\}./d' input.txt > output.txt
sed: 1: "/^.\{2048\}..*/d": RE error: invalid repetition count(s)
(Mac OS X এর)
এখানে একটি সমাধান যা 2049 বা আরও বেশি অক্ষরযুক্ত লাইনগুলি মুছে দেয়:
sed -E '/.{2049}/d' <file.in >file.out
অভিব্যক্তিটি /.{2049}/d
এমন কোনও লাইনের সাথে মিলবে যাতে কমপক্ষে 2049 টি অক্ষর থাকে এবং সেগুলি ইনপুট থেকে মুছে দেয়, কেবলমাত্র আউটপুটে সংক্ষিপ্ত রেখা তৈরি করে।
awk
দৈর্ঘ্যের 2048 বা তার চেয়ে কম আকারের মুদ্রণ লাইন সহ :
awk 'length <= 2048' <file.in >file.out
sed
আক্ষরিক সহ সমাধানটির নকল করা awk
:
awk 'length >= 2049 { next } { print }' <file.in >file.out
sed: 1: "/^.\{400,\}$/d": RE error: invalid repetition count(s)
(Mac OS X এর)
পাইথনে এর মতো কিছু কাজ করা উচিত।
of = open("orig")
nf = open("new",'w')
for line in of:
if len(line) < 2048:
nf.write(line)
of.close()
nf.close()
perl -lne "length < 2048 && print" infile > outfile
-l
যদিও এর প্রয়োজন নেই।
Warning: Use of "length" without parentheses is ambiguous at -e line 1. Unterminated <> operator at -e line 1.
length($_) > 2048 && print
। যাইহোক যাইহোক length
একটি শর্টকাট length($_)
।
উপরের উত্তরগুলি ম্যাক ওএস এক্স ১০.৯.৫ এ আমার পক্ষে কাজ করে না।
নিম্নলিখিত কোডটি কাজ করে:
sed '/.\{2048\}/d'
।
যদিও জিজ্ঞাসা করা হয়নি, তবে রেফারেন্সের জন্য সরবরাহ করা হয়েছে, বিপরীতটি নিম্নলিখিত কোডটি অর্জন করতে পারে:
sed '/.\{2048\}/!d'
।
sed: 1: "/.\{2048\}/d": RE error: invalid repetition count(s)
( Mac OS X, 10.10.4
)
গনু-সেডের সাহায্যে, ব্যাকস্ল্যাশগুলি টাইপ করা এড়াতে এবং একটি কমা দিয়ে একটি খোলা অন্তর সংজ্ঞায়িত করতে আপনি -r পতাকা ব্যবহার করতে পারেন:
sed -r "/.{2049,}/d" input.txt > output.txt
সঙ্গে:
অন্তরগুলির জন্য, বড় নিদর্শনগুলির সাথে মেলে না, আপনার পছন্দ মতো লাইন অ্যাঙ্কর প্রয়োজন
sed -r "/^.{32,64}$/d" input.txt > output.txt