লেজের আউটপুট ফিল্টার করা সম্ভব?


11

আমি একটি ফাইল টেল করতে চাই তবে কেবলমাত্র আউটপুট লাইনগুলিতে একটি নির্দিষ্ট স্ট্রিং রয়েছে। এটা কি সম্ভব?

উত্তর:


32

গ্রেপ ব্যবহার করুন। এটি ঠিক সেই উদ্দেশ্যে নির্মিত।

/ Var / log / syslog এর একটি লেজ থেকে লাইনগুলি সন্ধান করতে যেগুলিতে "ক্রোন" রয়েছে, কেবল চালনা করুন:

tail -f /var/log/syslog | grep cron

এবং যেহেতু এটি স্টিডিনের উপরে যে কোনও কিছু গ্রহণ করে, আপনি উপরের মতো একইভাবে পাইপ দিয়ে (অন্য চিহ্নটি ব্যবহার করে) অন্য কোনও কমান্ডের আউটপুটটিতেও এটি ব্যবহার করতে পারেন।


8
এটি মূলত সঠিক হলেও এটি অনুধাবন করা জরুরী যে grepএটি যখন ইন্টার-ইন্টারেক্টিভভাবে ব্যবহার করা হবে না যেমন যেমন এটি দীর্ঘতর পাইপলাইনের অংশ তখন। --line-bufferedপাইপলাইন থেকে গ্রেপ অপসারণ করা কোনও বিকল্প নয়, তখন জিএনইউ গ্রেপ ২.২.১ এর চারপাশে কাজ করার বিকল্প প্রস্তাব করে । (যখন আমি বলি গ্রেপ বাফার করবে মানে আমি বাফার 4k এর মতো কিছু না পৌঁছানো পর্যন্ত আউটপুট দেখতে পাবে না।)
কোজিরো

পূর্ববর্তী মন্তব্যের পরিপূরক হিসাবে, আধুনিক লিনাক্সের অধীনে "টেল-ফ" একটি লুপে কাজ করবে, সিসলগ ফাইলে আরও ইনপুটটির জন্য অপেক্ষা করবে। কমান্ডটি আসলে ফাইলের বিদ্যমান সামগ্রীতে শেষ করার জন্য, -f সুইচটি বাদ দিন: লেজ / ভার / লগ / সিসলগ |
গ্রেপ


4

এখানে আরও কয়েকটি ধারণা দেওয়া হয়েছে, যা সাধারণ না হলেও কিছু আকর্ষণীয় অতিরিক্ত নমনীয়তা সরবরাহ করতে পারে:

প্রথমত, আপনি গ্রেপের পরিবর্তে অ্যাজকে ফিল্টার করতে পারেন:

tail -f /var/log/messages | awk '/myfilterword/'

যে উদাহরণ ব্যবহার করে ঠিক একই কাজ করে grep। আপনি এটিকে অবাস্তব শক্তি ব্যবহার করে প্রসারিত করতে পারেন, উদাহরণস্বরূপ:

tail -f /var/log/messages | \
awk '/myfilterword/ { for (i=6; i<=NF; i++) printf("%s ", $i); printf("\n")}'

যা আউটপুটটির শেষ ক্ষেত্রের মাধ্যমে 6th ষ্ঠ মুদ্রণ করবে (ক্ষেত্রগুলি সাদা স্থান আলাদা করা আছে)

আরেকটি অনুরূপ ধারণাটি পার্ল ওয়ান-লাইনার ব্যবহার করা:

tail -f /var/log/messages | perl -ne "/myfilterword/ and print"

যে ঠিক মত কাজ করে grep। হতে পারে আপনি একটি লাইন নম্বর কাউন্টার এবং কেবল the ষ্ঠ ক্ষেত্র চান? এটি সম্পর্কে:

tail -f /var/log/messages | \ 
perl -lane "/myfilterword/ and printf \"%6d %s\n\",++\$a,\$F[6]"

স্পষ্টতই এই ধরণের জিনিসগুলি অন্যান্য সরঞ্জামগুলির সাথেও করা যেতে পারে, তবে আমি চিত্রিত করতে চেয়েছিলাম যে এখানে আরও বেশ কয়েকটি সাধারণ উদ্দেশ্য ভাষা ব্যবহারের কিছু মজাদার উপায় রয়েছে here


গ্রেপের চেয়ে আরও কীভাবে আরও প্রসারিত করা যায় সে সম্পর্কে +1 দুর্দান্ত বিশদ!
পাবলো

2

আরেকটি কৌশল লক্ষণীয়, যদি আপনার শিরোনাম সহ CSV ফাইল থাকে যা আপনি বাদ দিতে চান, যেমন:

% cat data.txt
fruit        dessert        calories
Apple        Pie            770
Banana       Pudding        625
Cherry       Cobbler        990
% tail -n +2 data.txt
Apple        Pie            770
Banana       Pudding        625
Cherry       Cobbler        990

এটা কোন ব্যাপার না কতদিন ইনপুট tailহয়, +n -2প্রথম লাইন বাদ হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.