এজেড সহ একটি পাঠ্য ফাইলে প্রথম 6 লাইন / সারিগুলি এড়িয়ে যান


39

আমি কীভাবে প্রথম 6 লাইন / সারিগুলিকে কোনও পাঠ্য ফাইলে (ইনপুট.টেক্সট) এড়িয়ে যেতে পারি এবং বাকী অংশটি এডকে দিয়ে প্রসেস করব? আমার awk স্ক্রিপ্ট (program.awk) এর বিন্যাসটি হ'ল:

BEGIN {
} 

{ 
process here
} 

END {

}

আমার পাঠ্য ফাইলটি এরকম:

0
3
5
0.1 4.3
2.0 1.5
1.5 3.0
0.3 3.3
1.5 2.1
.
.
.

আমি ফাইলটি থেকে শুরু করে প্রক্রিয়া করতে চাই:

0.3 3.3
1.5 2.1
.
.
.

উত্তর:


59

দুটি নিদর্শনগুলির মধ্যে দুটি ব্যবহার করুন:

NR>6 { this_code_is_active }

অথবা এটা:

NR<=6 { next }
{ this_code_is_active }

আর্গুমেন্ট হিসাবে আর্গুমেন্ট হিসাবে যদি আপনার কাছে অনেকগুলি ফাইল থাকে এবং প্রতিটি ফাইলে 6 টি লাইন এড়িয়ে যেতে চান তবে এনআরের পরিবর্তে এফএনআর ব্যবহার করুন।


29

চেষ্টা করুন:

awk 'FNR > 6 { #process here }' file

4
ভাল! তবে কেন এটি আরও ভাল তা আপনি ব্যাখ্যা করেন নি - একাধিক ফাইলের FNRজন্য প্রতিটি ফাইলের সারি সংখ্যা, এবং NRপুরো ইনপুটটিতে নম্বর থাকে (পাইপিং করার সময় কোনও সমস্যা হয় না)।
টমাসজ গেন্ডার

3

আপনি ফাইলগুলির শুরুতে বা শেষে প্রোগ্রামগুলি headবা tailপ্রোগ্রামগুলি ব্যবহার করে একটি নির্বিচার সংখ্যক লাইন এড়িয়ে যেতে পারেন ।

আপনার কংক্রিট প্রশ্নের জন্য,

tail input.txt -n+7 | program.awk

করবে, আপনার program.awkফাইল এক্সিকিউটেবল হয় তবে। অন্যথায়, আপনি ব্যবহার করতে পারেন

tail input.txt -n+7 | awk -f program.awk

এইভাবে, আপনি প্রতিটি লাইনের জন্য একটি তুলনা ছাড়বেন এবং আপনাকে আপনার এডাব্লুকে কোডের যুক্তি পরিবর্তন করার দরকার নেই।

tail সপ্তম লাইনে শুরু পাঠ্য স্ট্রিমিং শুরু করবে, ছয় প্রথম লাইন এড়িয়ে যাবে।

পারফরম্যান্সে এটি কোনও বিশাল চুক্তি হবে না, বিশেষত যদি পাঠ্য প্রক্রিয়াটি ক্যাশে করার জন্য সাধারণ ধন্যবাদ। তবে দীর্ঘ ফাইল এবং ক্লাউড পরিবেশে বারবার ব্যবহারের জন্য কিছু খরচ বাঁচাতে পারে।


সঠিক, তবে থাম্বের নিয়ম হিসাবে, পাইপিং এড়ানো উচিত যখন আপনি সহজেই একটি সরঞ্জাম দিয়ে এটি করতে পারেন। কেবল কয়েকটি লাইন সরাতে উভয় কমান্ডের মাধ্যমে একটি বিশাল পাঠ্য ফাইল পাইপিংয়ের কথা ভাবেন।
ফিলিপস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.