grep -Eow '\w{10}' | grep -v '\(.\).*\1'
দুটি শব্দ অভিন্ন অক্ষরযুক্ত শব্দগুলি বাদ দেয়।
grep -Eow '\w{10}' | grep -v '\(.\)\1'
পুনরাবৃত্তি করা অক্ষরগুলি বাদ দেয়।
POSIXly:
tr -cs '[:alnum:]_' '[\n*]' |
grep -xE '.{10}' |
grep -v '\(.\).*\1'
tr
sশব্দহীন-অক্ষরগুলির কোনও সমীকরণ ( cআলফা-সংখ্যাসূচক ও আন্ডারস্কোরের সমাপ্তি) কে একটি নতুন লাইনের চরিত্রে রূপান্তর করে শব্দগুলিকে তাদের নিজস্ব লাইনে রাখে ।
বা একটি সহ grep
:
tr -cs '[:alnum:]_' '[\n*]' |
grep -ve '^.\{0,9\}$' -e '.\{11\}' -e '\(.\).*\1'
(10 টিরও কম এবং 10 টিরও বেশি অক্ষরের লাইনগুলি বাদ দিন এবং একটি চরিত্রের অন্তত দু'বার প্রদর্শিত হবে)।
grep
কেবল একটির সাথে (পিসিআরই সমর্থন সহ জিএনইউ গ্রেপ বা pcregrep
):
grep -Po '\b(?:(\w)(?!\w*\1)){10}\b'
এটি হ'ল, একটি শব্দ সীমানা ( \b
) এর পরে 10 টি শব্দের অক্ষরের ক্রম হয় (প্রতিটি শব্দের অক্ষরের ক্রম এবং তাদের অনুসরণ না করে, নেতিবাচক চেহারা-সামনের PCRE অপারেটর ব্যবহার করে (?!...)
)।
আমরা ভাগ্যবান যে এটি এখানে কাজ করে, কারণ অনেকগুলি রেজিপ এক্স ইঞ্জিন পুনরাবৃত্তি অংশগুলির অভ্যন্তরে ব্যাকরিফারেন্স সহ কাজ করে না।
নোট করুন (কমপক্ষে GNU গ্রেপের আমার সংস্করণ সহ)
grep -Pow '(?:(\w)(?!\w*\1)){10}'
কাজ করে না, কিন্তু
grep -Pow '(?:(\w)(?!\w*\2)){10}'
(যেমন echo aa | grep -Pw '(.)\2'
) যা বাগের মতো শোনাচ্ছে does
তুমি চাইতে পারো:
grep -Po '(*UCP)\b(?:(\w)(?!\w*\1)){10}\b'
আপনি যদি চান \w
বা \b
কোনও অক্ষরকে শব্দের উপাদান হিসাবে বিবেচনা করেন এবং কেবলমাত্র ASCII নয় এমন লোকেলগুলিতে নয়।
অন্য বিকল্প:
grep -Po '\b(?!\w*(\w)\w*\1)\w{10}\b'
এটি একটি শব্দের সীমানা (শব্দের অক্ষরের ক্রম দ্বারা অনুসরণ করা হয় না এমন একটি যার পুনরাবৃত্তি হয়) এর পরে 10 শব্দ অক্ষর হয়।
কারও মনের পিছনে থাকা জিনিসগুলি:
- তুলনাটি কেস সংবেদনশীল, সুতরাং
Babylonish
উদাহরণস্বরূপ মিলানো হবে, যেহেতু দুটি অক্ষর B
, একটি নিম্ন এবং একটি উচ্চতর কেস থাকলেও সমস্ত অক্ষর আলাদা হয় ( -i
এটি পরিবর্তন করতে ব্যবহার করুন )।
- জন্য
-w
, \w
এবং \b
, একটি শব্দ (হওয়া ASCII বেশী শুধুমাত্র গনুহ জন্য একটি চিঠি grep
এখন জন্য , [:alpha:]
আপনার লোকেলে চরিত্র শ্রেণী যদি ব্যবহার -P
এবং (*UCP)
), দশমিক সংখ্যা বা আন্ডারস্কোর ।
- এর অর্থ হ'ল
c'est
(কোনও শব্দের ফরাসি সংজ্ঞা অনুসারে দুটি শব্দ) বা it's
( কোনও শব্দের কিছু ইংরেজী সংজ্ঞা অনুসারে একটি শব্দ) বা rendez-vous
(কোনও শব্দের ফরাসী সংজ্ঞা অনুসারে একটি শব্দ) একটি শব্দ হিসাবে বিবেচিত হয় না।
- এমনকি
(*UCP)
ইউনিকোড সংমিশ্রিত অক্ষরগুলিকে শব্দের উপাদান হিসাবে বিবেচনা করা হয় না, সুতরাং téléphone
( $'t\u00e9le\u0301phone'
) 10 টি অক্ষর হিসাবে বিবেচনা করা হয়, যার মধ্যে একটি নন-আলফা। défavorisé
( $'d\u00e9favorise\u0301'
) এটি দুটি মিলিয়েও মিলবে é
কারণ এটি 10 টির মধ্যে বিভিন্ন আলফা অক্ষর এবং তার পরে সম্মিলিত তীব্র উচ্চারণ (নন-আলফা, সুতরাং e
এবং এর উচ্চারণের মধ্যে একটি শব্দ সীমানা রয়েছে)।