আমার কাছে একটি পাঠ্য ফাইল রয়েছে যাতে প্রবেশের দীর্ঘ তালিকা রয়েছে (প্রতিটি লাইনে একটি)। এর কয়েকটি হ'ল সদৃশ, এবং আমি জানতে চাই যে কোনও নকল অপসারণ করা সম্ভব কিনা (এবং যদি তা হয় তবে)। আমি সম্ভব হলে vi / vim এর মধ্যে থেকে এটি করতে আগ্রহী।
আমার কাছে একটি পাঠ্য ফাইল রয়েছে যাতে প্রবেশের দীর্ঘ তালিকা রয়েছে (প্রতিটি লাইনে একটি)। এর কয়েকটি হ'ল সদৃশ, এবং আমি জানতে চাই যে কোনও নকল অপসারণ করা সম্ভব কিনা (এবং যদি তা হয় তবে)। আমি সম্ভব হলে vi / vim এর মধ্যে থেকে এটি করতে আগ্রহী।
উত্তর:
আপনি যদি নিজের ফাইলটি বাছাই করে ঠিক করেন তবে আপনি এটি ব্যবহার করতে পারেন:
:sort u
:%!uniq
হয় তবে কেবল ফাইলটি বাছাই না করে ডুপ্লিকেট এন্ট্রিগুলি সরাতে ব্যবহার করুন।
u
এটা চেষ্টা কর:
:%s/^\(.*\)\(\n\1\)\+$/\1/
এটি তত্ক্ষণাত যেকোন লাইন অনুসন্ধান করে তারপরে নিজের এক বা একাধিক অনুলিপি অনুসন্ধান করে এবং এটি একটি একক অনুলিপি দ্বারা প্রতিস্থাপন করে।
আপনার ফাইলটি চেষ্টা করার আগে একটি অনুলিপি তৈরি করুন। এটি অনির্ধারিত।
কমান্ড লাইন থেকে কেবল করুন:
sort file | uniq > file.new
:sort u
আমার বড় ফাইলটিতে যেমন ঝুলছিল তেমন কাজের জন্য গ্রহণযোগ্য উত্তর পাওয়া যায়নি । এটি খুব দ্রুত এবং নিখুঁতভাবে কাজ করেছে। ধন্যবাদ!
'uniq' is not recognized as an internal or external command, operable program or batch file.
awk '!x[$0]++' yourfile.txt
আপনি যদি অর্ডার সংরক্ষণ করতে চান (যেমন, বাছাই গ্রহণযোগ্য নয়)। এটি ভিএম থেকে অনুরোধ করার জন্য, :!
ব্যবহার করা যেতে পারে।
g/^\(.*\)$\n\1/d
উইন্ডোজ আমার জন্য কাজ করে। যদিও প্রথমে লাইনগুলি বাছাই করা উচিত।
aaaa
এরপরে ভুলক্রমে aaaabb
মুছে ফেলা হবে aaaa
।
আমি উপরের উত্তর দুটি মিলিত করতে হবে:
go to head of file
sort the whole file
remove duplicate entries with uniq
1G
!Gsort
1G
!Guniq
আপনি যদি কয়টি সদৃশ লাইন অপসারণ করতে আগ্রহী হন তবে আপনার বাফারে উপস্থিত রেখাগুলির সংখ্যা পরীক্ষা করার জন্য আগে এবং পরে নিয়ন্ত্রণ-জি ব্যবহার করুন।
'uniq' is not recognized as an internal or external command, operable program or batch file.
তারপরে ভিজ্যুয়াল-লাইন মোডে লাইনগুলি নির্বাচন করুন ( Shift+ v) :!uniq
। এটি কেবল একের পর এক আসবে এমন নকলগুলি ধরবে।
ইউনিকে কীভাবে ভিএমএলে কার্যকর করা যায় সে সম্পর্কে, ইউনিকের জন্য যে প্লাগইনটি আমি বজায় রাখছি তাতে সন্ধান করুন । এটি কার্যকর করার বিভিন্ন উপায় আপনি দেখতে পাবেন যা ভিম মেলিং-তালিকায় দেওয়া হয়েছিল।
অন্যথায়, :sort u
সত্যিই যেতে উপায়।
এই সংস্করণটি কেবল পুনরাবৃত্ত রেখাগুলি সরিয়ে দেয় যা মীমাংসা হয়। মানে, কেবল পরপর পুনরাবৃত্তি করা লাইনগুলি মুছে দেয়। প্রদত্ত মানচিত্রটি ব্যবহার করে ফাংশনটি ফাঁকা রেখাগুলির সাথে নষ্ট করবে। তবে লাইনের শুরুতে ম্যাচগুলিতে আরজিইএক্সএক্স পরিবর্তন করা হলে ^
এটি নকল খালি লাইনগুলিও সরিয়ে ফেলবে।
" function to delete duplicate lines
function! DelDuplicatedLines()
while getline(".") == getline(line(".") - 1)
exec 'norm! ddk'
endwhile
while getline(".") == getline(line(".") + 1)
exec 'norm! dd'
endwhile
endfunction
nnoremap <Leader>d :g/./call DelDuplicatedLines()<CR>
একটি বিকল্প পদ্ধতি যা vi / vim ব্যবহার করে না (খুব বড় ফাইলগুলির জন্য), লিনাক্স কমান্ড লাইনের ব্যবহার অনুসারে বাছাই করুন এবং ইউনিক:
sort {file-name} | uniq -u