মার্কো Ceppi সম্পর্কে সঠিক awk
এই জন্য একটি ভাল টুল হচ্ছে কিন্তু awk এছাড়াও চেয়ে ভাল টুল sort
এবং uniq
যেহেতু যে যুক্তি করার জন্য সরানো যাবে না awk
। আপনি যদি কেবল 1000 লাইনগুলি টেলিং করছেন তবে এটি কোনও তাত্পর্যপূর্ণ করবে না তবে আপনি যদি একটি বিশাল মাল্টি জিগ লগ ফাইলটি দেখতে চান তবে এটি আরও দ্রুতগতিতে স্থানান্তরিত করতে দ্রুততরতার আদেশ হতে পারে awk
।
cat /var/log/apache_access | awk '{freq[$1]++} END {for (x in freq) {print freq[x], x}}' | sort -n
আপনার যা প্রয়োজন তা করবে কিন্তু বড় ফাইলগুলির জন্য খুব দ্রুত। এটি আইপি ঠিকানায় কী হিসাবে আইপি ঠিকানা ব্যবহার করে এবং আইপিগুলি যতবার মান হিসাবে সংঘটিত হয় তার সংখ্যাটি ব্যবহার করে এটি আইপি-র একটি অ্যারে তৈরি করে k
চূড়ান্ততাটি আসে কারণ চূড়ান্ত আউটপুটটি বাছাই করা ছাড়া ডাবলু একটি ডেটা অতিক্রম করে এবং বেশিরভাগ কাজ করে। অন্য পদ্ধতিটি ব্যবহার করে, যদি আপনার ট্রান্সফার লগটিতে ১,০০,০০০ লাইন থাকে, awk সেই ১,০০,০০০ লাইনগুলিকে ১,০০,০০০ আইপি ছিটিয়ে দেয়, তবে সাজান পুরো ১,০০,০০০ আইপি ছাড়িয়ে যায়, এখন সাজানো ১,০০,০০০ আইপি ইউনিককে প্রেরণ করে যা একে একে আরও কমিয়ে আনে বাছাই করার আগে তথ্য পরিমাণ। 1,000,000 আইপিতে একাধিক পাসের চারপাশে পাইপিং / না করার পরিবর্তে, awk এক পাসে প্রায় সবকিছু করে।
আমার ল্যাপটপে একটি 5,513,132 লাইন অ্যাপাচি লগ (1.1 জিগস) ব্যবহার করা হচ্ছে, এখানে একটি গতির তুলনা করা হয়েছে:
- 2 মি 45s
cat ./apache_access | awk '{print $1}' | sort -nk1 | uniq -c | sort -nk1
- 0 মি 40
cat ./apache_access | awk '{freq[$1]++} END {for (x in freq) {print freq[x], x}}' | sort -n