আমি কীভাবে ভিজুয়াল স্টুডিও কোডে নকল লাইনগুলি সরিয়ে ফেলতে পারি?


117

বলুন আপনার কাছে নিম্নলিখিত পাঠ্য রয়েছে:

abc
123
abc
456
789
abc
abc

আমি সমস্ত "এবিসি" লাইনগুলি সরিয়ে কেবল একটি রাখতে চাই। আমি বাছাই করতে কিছু মনে করি না। ফলাফলটি এমন হওয়া উচিত:

abc
123
456
789

উত্তর:


223

লাইন ক্রম গুরুত্বপূর্ণ না হলে

লাইনগুলি বর্ণানুক্রমিকভাবে বাছাই করুন, যদি তারা ইতিমধ্যে না থাকে এবং এই পদক্ষেপগুলি সম্পাদন করেন:
(এই সম্পর্কিত প্রশ্নের উপর ভিত্তি করে: আমি নিয়মিত এক্সপ্রেশনগুলি ব্যবহার করে কোনও ফাইল থেকে সদৃশ লাইনগুলি কীভাবে সন্ধান করতে পারি? )

  1. Control+ +F

  2. "প্রতিস্থাপন মোড" টগল করুন

  3. "নিয়মিত এক্সপ্রেশন ব্যবহার করুন" ( .*প্রতীক সহ আইকন ) টগল করুন

  4. ইন সার্চ ক্ষেত্র, টাইপ^(.*)(\n\1)+$

  5. " প্রতিস্থাপন করুন " ক্ষেত্রে টাইপ করুন$1

  6. প্রতিস্থাপন সমস্ত বোতাম("সমস্ত প্রতিস্থাপন করুন") ক্লিক করুন ।

লাইনের ক্রম যদি গুরুত্বপূর্ণ হয় তবে আপনি বাছাই করতে পারবেন না

এক্ষেত্রে হয়, ভিএস কোডের বাইরে কোনও সমাধানের জন্য অবলম্বন করুন ( এখানে দেখুন ), বা - যদি আপনার নথিটি খুব বড় না হয় এবং সমস্ত প্রতিস্থাপন বোতামটি স্প্যাম করতে আপনার আপত্তি না - তবে পূর্ববর্তী পদক্ষেপগুলি অনুসরণ করুন, তবে 4 এবং 5 ধাপে, এগুলি প্রবেশ করান:
( বাছাই ছাড়াই নির্দিষ্ট সদৃশ লাইনগুলি সরানোর উপর ভিত্তি করে )

সাবধানতা: অনেকগুলি লাইনযুক্ত ফাইলের জন্য ব্লক (1000+); ভিএস কোড ক্রাশ হতে পারে; কিছু ক্ষেত্রে ফাঁকা লাইন প্রবর্তন করতে পারে।

  • অনুসন্ধান :((^[^\S$]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\n)?

  • এর সাথে প্রতিস্থাপন করুন :$1

এবং তারপরে নকল সংঘটিত হওয়ার পরে যতবার "সমস্ত প্রতিস্থাপন করুন" বোতামটি ক্লিক করুন ।

আপনি যখন জানবেন যে আপনি যখন বোতামটি ক্লিক করেন তখন রেখা গণনা হ্রাস বন্ধ হয়ে যায় it's এটিতে নজর রাখতে নথির শেষ লাইনে নেভিগেট করুন।


4
((^[^\S\r\n]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\r?\n)?আমার vscode ক্র্যাশ করেছে .... আমি একটি ফাইল 229 লাইনে একটি অনুসন্ধান করেছি। :(
Hickory420

@ হিকরি 420 আমি আমার মেশিনে 1000 লাইন (20-চর লম্বা, এলোমেলো) দিয়ে পরীক্ষা করেছি এবং কোনও ক্রাশ পাইনি, তবে প্রতিটি পাসে কয়েক সেকেন্ডের জন্য 100% সিপিইউ লোড সহ একটি থ্রেড ব্লক করেছে। হ্যাঁ, এটি বড় ফাইলগুলির জন্য খুব কমই যুক্তিযুক্ত।
মার্চ ২৩7777

এর জন্য ধন্যবাদ. আপনি দয়া করে রেজেক্স ব্যাখ্যা করতে পারেন ^(.*)(\n\1)+$? সদৃশ সারিগুলি সরিয়ে নেওয়ার পরে আমি সিএসভিতে সদৃশ প্রথম কলামটির সাথে সমস্ত সারিটি দেখতে চাই এবং রেজেক্সটি সংশোধন করতে চাই।
উরভা শব্বির

1
বাহ আমার মনে হচ্ছে আমি রেগেজেসে বেশ ভাল এবং এটি এখনও আমার মনকে উড়িয়ে দিয়েছে, দুর্দান্ত উত্তর !!
ইলেক্ট্রোভির

@UrvahShabbir, Regex যে টুকরা জন্য একটি ব্যাখ্যা দেওয়া হয় লিঙ্ক Q & A- । আমার \r?উত্তরটি অন্যরকম থেকে বিটটি আসলেই প্রয়োজনীয় নয় only
২২7777

65

এখানে একটি খুব আকর্ষণীয় এক্সটেনশন: ট্রান্সফর্মার

বৈশিষ্ট্য:

  • অনন্য লাইন
  • নতুন দস্তাবেজ হিসাবে স্বতন্ত্র লাইন
  • ফিল্টার লাইন
  • নতুন ডকুমেন্ট হিসাবে লাইন ফিল্টার করুন
  • লাইনে বাছাই করুন
  • দৈর্ঘ্য অনুসারে লাইনগুলি সাজান
  • কার্সার সারিবদ্ধ করুন
  • সিএসভি সারিবদ্ধ করুন
  • কমপ্যাক্ট সিএসভি
  • নতুন নথিতে অনুলিপি করুন
  • লাইন নির্বাচন করুন
  • জেএসএন হিসাবে লাইন
  • ট্রিম লাইনের
  • নতুন ডকুমেন্ট হিসাবে ডুপ্লিকেট লাইন গণনা করুন
  • ম্যাক্রো

সদৃশ লাইনগুলি সরানোর জন্য:

  • দস্তাবেজ থেকে সদৃশ লাইনগুলি সরিয়ে দেয়

  • কোনও নির্বাচন না হলে নির্বাচন বা বর্তমান ব্লকে কাজ করে

আমি "ইউনিক লাইন্স" কমান্ড ছাড়াও এটির সাথে খুব বেশি খেলিনি তবে এটি বেশ সুন্দরভাবে সম্পন্ন হয়েছে বলে মনে হচ্ছে (ম্যাক্রো রেকর্ডার চেষ্টা করে!)।


25

@ মার্ক ২৩7777 এর উত্তরে যুক্ত করতে।

যদি অর্ডারটি গুরুত্বপূর্ণ হয় এবং আপনি যত্নবান হন না যে আপনি কেবল নকল রেখাগুলির শেষটি রেখেছেন তবে কেবলমাত্র ডুপ্লিকেট খালি খালি লাইনগুলি সরাতে চাইলে কেবল নিম্নলিখিত রেজিএক্সএক্সটি সন্ধান করুন

^(.+\n)(?=(?:.*\n)*?\1)

আপনি যদি নকল খালি লাইনগুলি সরাতে চান তবে *পরিবর্তে ব্যবহার করুন+

^(.*\n)(?=(?:.*\n)*?\1)

এবং কিছুই সঙ্গে প্রতিস্থাপন।

ভরাট অনুসন্ধান এবং প্রতিস্থাপন বাক্সের স্ক্রিনশট

এটি একটি লাইন নেবে এবং আরও কিছু (সম্ভবত 0) লাইন অনুসরণ করার চেষ্টা করবে ঠিক একই লাইনের পরে নেওয়া। এটি নেওয়া লাইনটি সরিয়ে ফেলবে।

এটি কেবল একটি শট রেজেক্স। প্রতিস্থাপন বোতামটি স্প্যাম করার দরকার নেই।


সুন্দরভাবে সংযুক্ত
এঙ্গাস l

4
খুশী হলাম। আমি ^(.+\n)(?=(?:.*\n)*?\1)পরিবর্তে প্রস্তাব দিচ্ছি কারণ আপনার রেজেক্স এমন একটি খালি লাইন সরিয়ে নিয়েছে যেখানে এটি আশা করা যায় নি। যেভাবেই হোক উত্সাহিত।
২৩7777

ভাল ধরা ... OTOH: নকল খালি লাইনগুলিও সদৃশ;)
স্কিভি

1
@Skeeve চলো, এই মাত্র উর সহায়ক উত্তর ও ভাল সম্প্রদায়ের জন্য :) সকল জন্য একটু ধন্যবাদ
জামান

1
xxx(?=…)একটি চেহারা-ম্যাচ। সুতরাং এটি নিশ্চিত করে যে, "এক্সএক্সএক্সএক্স" "…" এর সাথে যা কিছু অনুসরণ করে, তবে অনুসন্ধানটি অগ্রসর হয় না। (?:…)কেবল একটি বন্ধনী যা বন্ধনী গণনায় গণনা করা হয় না। .*\nএটি একটি (সম্ভবত শূন্য) লাইনের একটি প্যাটার্ন। *এর অর্থ হ'ল এখানে বেশ কয়েকটি লাইন হতে পারে, এমনকি কোনওটিও নয়। ?তারকাচিহ্ন ( *) এর পরে বোঝা যাচ্ছে যে আমরা যতটা সম্ভব কম লাইন চাই। \1এই অভিব্যক্তিটির নীচের হিসাবে প্রভাবটি হ'ল আমরা সমস্ত লাইনের জন্য অপেক্ষায় থাকি যা \1আমরা কোনও লাইনের মিল খুঁজে না পাওয়া পর্যন্ত মেলে না \1। আমি আশা করি এটি পরিষ্কার হয়ে গেছে।
স্কিভ

22

আমি ঠিক একই সমস্যাটি পেয়েছি এবং ভিজ্যুয়াল স্টুডিও কোড প্যাকেজটি "বাছাই করুন লাইনগুলি" পেয়েছি। বিশদের জন্য ভিজ্যুয়াল স্টুডিও কোডের বাজারের জায়গাটি দেখুন (উদাহরণস্বরূপ লাইনগুলি সাজান )।

এই প্যাকেজটিতে "বাছাই করা রেখাগুলি (অনন্য)" বিকল্প রয়েছে, যা এটি আমার জন্য করেছে। লাইনের শুরুতে / শেষে যে কোনও সাদা স্থানের যত্ন নিন। তারা লাইনগুলিকে অনন্য বলে বিবেচনা করা হয় কিনা তা প্রভাবিত করে।



1
দেখে মনে হচ্ছে এক্সটেনশানের আর সদৃশ এন্ট্রি সরিয়ে ফেলার ক্ষমতা নেই। @ মার্ক -2377 দ্বারা উত্তরটির সাথে এটি সংমিশ্রণ করা আমার পক্ষে কৌশলটি মনে হচ্ছে।
ড্যান অ্যাটকিনসন

12

ডুপচেকার এক্সটেনশনটি ইনস্টল করুন , হিট করুন F1এবং "ডুপ্লিকেটগুলি পরীক্ষা করুন" টাইপ করুন।

এটি সদৃশগুলির জন্য পরীক্ষা করবে এবং আপনি সেগুলি সরাতে চান কিনা তা জিজ্ঞাসা করবে।


11

একটি নিয়মিত এক্সপ্রেশন দিয়ে সন্ধান এবং প্রতিস্থাপন চেষ্টা করুন ।

  • অনুসন্ধান: ^(.+)((?:\r?\n.*)*)(?:\r?\n\1)$

  • প্রতিস্থাপন করুন: $1$2

প্রথম গ্রুপে কিছু বৈকল্পিক উপস্থাপন করা সম্ভব।


-3

বাস্তবে ভিজ্যুয়াল স্টুডিও কোডে নয়, তবে এটি যদি কাজ করে তবে তা কাজ করে।

  1. একটি নতুন এক্সেল স্প্রেডশিট খুলুন
  2. একটি কলামে তথ্য আটকান
  3. ডেটা ট্যাবে যান
  4. ডেটা কলাম নির্বাচন করুন (যদি আপনি ইতিমধ্যে না থাকে)
  5. অনুলিপিগুলি সরান ক্লিক করুন (কিছুটা বারের মাঝখানে)
  6. OKসদৃশ অপসারণ করতে ক্লিক করুন ।

এটি ভিজ্যুয়াল স্টুডিও কোডটি নির্দিষ্ট করে দেওয়ার মতো সেরা উত্তর নয় তবে আমি যেমন বলেছিলাম: এটি যদি কাজ করে তবে তা কার্যকর হয় :)


আপনি কোনও স্ক্রিপ্ট সরবরাহ করে এটি আরও প্রাসঙ্গিক করে তুলতে পারেন যা ভিজ্যুয়াল স্টুডিও কোড থেকে সরাসরি কল করা যেতে পারে। ক্রম কথায়, এই প্রক্রিয়াটি স্বয়ংক্রিয় করে তোলে। এটি সম্ভব কিনা আমি জানি না, তবে এমন একটি স্ক্রিপ্ট যা এক্সেলটিকে তার উন্মুক্ত COM ইন্টারফেসের মাধ্যমে ডেকে আনবে। এটি এই উত্তরটিকে আরও মূল্যবান করে তুলবে কারণ এটি ঝরঝরে স্টাফ করার জন্য অন্যান্য অ্যাপ্লিকেশনগুলিকে লাভবান করার একটি উদাহরণ be
পিটার মর্টেনসেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.