উত্তর:
আপনি কি বর্ণানুক্রমিক, আদেশযুক্ত তালিকার সাথে বেঁচে থাকতে পারেন:
echo "red apple
> green apple
> green apple
> orange
> orange
> orange
> " | sort -u
?
green apple
orange
red apple
অথবা
sort -u FILE
-u মানে অনন্য, এবং স্বতন্ত্রতা কেবল বাছাইয়ের মাধ্যমে পৌঁছে যায়।
একটি সমাধান যা অর্ডার সংরক্ষণ করে:
echo "red apple
green apple
green apple
orange
orange
orange
" | { old=""; while read line ; do if [[ $line != $old ]]; then echo $line; old=$line; fi ; done }
red apple
green apple
orange
এবং, একটি ফাইল সহ
cat file | {
old=""
while read line
do
if [[ $line != $old ]]
then
echo $line
old=$line
fi
done }
শেষ দুটি কেবল নকলগুলি সরিয়ে দেয়, যা তাত্ক্ষণিকভাবে অনুসরণ করে - যা আপনার উদাহরণের সাথে খাপ খায়।
echo "red apple
green apple
lila banana
green apple
" ...
একটি কলা দ্বারা বিভক্ত দুটি আপেল মুদ্রণ করবে।
কেবল একটি গণনা পেতে:
$> egrep -o '\w+' fruits.txt | sort | uniq -c
3 apple
2 green
1 oragen
2 orange
1 red
বাছাই করা গণনা পেতে:
$> egrep -o '\w+' fruits.txt | sort | uniq -c | sort -nk1
1 oragen
1 red
2 green
2 orange
3 apple
সম্পাদনা
আহা, এটি শব্দের সীমানা বরাবর ছিল না, আমার খারাপ। পূর্ণ রেখাগুলির জন্য ব্যবহারের আদেশ এখানে রইল:
$> cat fruits.txt | sort | uniq -c | sort -nk1
1 oragen
1 red apple
2 green apple
2 orange
কাউন্টার টাইপটি ব্যবহার করে এখানে একটি সাধারণ অজগর স্ক্রিপ্ট । সুবিধাটি হ'ল এটির জন্য মূলত শূন্য মেমরি ব্যবহার করে ফাইলটি বাছাই করা দরকার না:
import collections
import fileinput
import json
print(json.dumps(collections.Counter(map(str.strip, fileinput.input())), indent=2))
আউটপুট:
$ cat filename | python3 script.py
{
"red apple": 1,
"green apple": 2,
"orange": 3
}
অথবা আপনি একটি সাধারণ ওয়ান-লাইনার ব্যবহার করতে পারেন:
$ cat filename | python3 -c 'print(__import__("json").dumps(__import__("collections").Counter(map(str.strip, __import__("fileinput").input())), indent=2))'
-d
নোটের জন্য থাম্বস আপ ।