পাঠ্য ফাইলে শব্দের উপস্থিতি গণনা করা হচ্ছে


31

আমার কাছে একটি টেক্সট ফাইল রয়েছে যা টুইটগুলি ধারণ করে এবং আমি টুইটটিতে একটি শব্দের উল্লেখের সংখ্যা গণনা করতে পারি। উদাহরণস্বরূপ, ফাইলটিতে রয়েছে:

Apple iPhone X is going to worth a fortune
The iPhone X is Apple's latest flagship iPhone. How will it pit against it's competitors?

এবং ধরা যাক আমি ফাইলটিতে আইফোন শব্দের কতবার উল্লেখ করা হয়েছে তা গণনা করতে চাই। সুতরাং আমি চেষ্টা করেছি এখানে।

cut -f 1 Tweet_Data | grep -i "iPhone" | wc -l

এটি অবশ্যই কাজ করে তবে আমি ইউনিক্সের 'ডাব্লুসি' কমান্ড সম্পর্কে বিভ্রান্ত হয়ে পড়েছি। আমি যদি এমন কিছু চেষ্টা করি তবে তারতম্য কী:

cut -f 1 Tweet_Data | grep -c "iPhone"

পরিবর্তে -c কোথায় ব্যবহৃত হয়? এই দুটিই টুইটের পূর্ণ পূর্ণ ফাইলের জন্য পৃথক ফলাফল দেয় এবং এটি কীভাবে কাজ করে তা নিয়ে আমি বিভ্রান্ত। ঘটনাটি গণনার সঠিক পদ্ধতি কোন পদ্ধতি?


cut -f1ট্যাবগুলির উপর ভিত্তি করে কাটা হচ্ছে যা এখানে খুব বেশি কিছু করছে না। আপনি কি নিশ্চিত যে wc -lএটি আপনাকে সঠিক গণনা দিচ্ছে? এটি এখানে 2 দেখায় তবে আমি "আইফোন" এর 3 টি উদাহরণ গণনা করি।
জেফ শ্যাচলার

আরেকটি কৌশল: unix.stackexchange.com/q/39039/117549
জেফ

এছাড়াও অনুরূপ: unix.stackexchange.com/q/60727/117549
জেফ

উত্তর:


54

এ জাতীয় প্রয়োজনীয়তা প্রদত্ত, আমি একটি জিএনইউ গ্রেপ ব্যবহার করব ( -oবিকল্পটির জন্য ), তারপরে এটি উপস্থিত হয়ে wcমোট সংখ্যার সংখ্যা গণনা:

$ grep -o -i iphone Tweet_Data | wc -l
3

প্লেইন grep -cডেটার উপর সংখ্যা গণনা করা হবে লাইন ম্যাচের না মোট সংখ্যা শব্দ যে ম্যাচ। -oবিকল্পটি ব্যবহার করে গ্রেপকে তার ম্যাচটি অনলাইনে প্রতিটি ম্যাচ আউটপুট করতে বলে, ম্যাচটি লাইনে যতবারই হয় না।

wc -lwcইউটিলিটি লাইনের সংখ্যা গণনা করতে বলে । গ্রেপ প্রতিটি ম্যাচকে তার নিজস্ব লাইনে রাখার পরে, এটি ইনপুটটিতে শব্দের সংঘটনগুলির মোট সংখ্যা।


যদি জিএনইউ গ্রেপ উপলব্ধ না হয় (বা পছন্দসই), আপনি ইনপুটটি trএমনভাবে রূপান্তর করতে পারেন যাতে প্রতিটি শব্দ তার নিজস্ব লাইনে থাকে, তারপরে grep -cগণনা করুন:

$ tr '[:space:]' '[\n*]' < Tweet_Data | grep -i -c iphone
3

1

সবচেয়ে সহজ পদ্ধতিটি হ'ল,

grep -wc "your_text" FileName

আপনার জন্য এটি হতে হবে,

grep -wc "iPhone" Tweet_Data

খুব পরিষ্কার উত্তর তবে আপনি যদি 'শীতল' এর মতো কোনও শব্দের সাথে মেলে তবে আপনি কেবল শীতল এবং নন সি কুলের সাথে মিলে যাবেন তাই সচেতন থাকুন শব্দের বিষয়ের চারপাশে ফাঁকা স্থান।
জেসনলোনহার্ড

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