حذف الأسطر المكررة
نظّف قائمة: أزِل التكرار، ورتّبها كما ينبغي، واحذف الأسطر الفارغة. تخبرك الأداة بالأسطر التي تكررت وعدد مرات تكرارها، بدلًا من أن تقلّص قائمتك بصمت.
- لا يُخزَّن أبدًا
- لا طابور ولا انتظار
- دون تسجيل ودون علامة مائية
يظهر النتيجة هنا.
كيف تعمل الأداة
الصق قائمتك
عناوين بريد إلكتروني، روابط URL، رموز منتجات، أي شيء بواقع عنصر في كل سطر. أو أفلِت ملفًا نصيًا.
حدّد معنى «متطابق»
تجاهل المسافات في نهايات الأسطر، أو تجاهل حالة الأحرف، أو احتفظ بالنسخة الأولى أو الأخيرة، أو احذف كل سطر كان له تكرار أصلًا.
رتّب ونظّف
رتّب ترتيبًا طبيعيًا، أو اعكس، أو اخلط، أو رقّم الأسطر، أو احذف الفارغة منها، ثم انسخ النتيجة.
ما يحدث للأسطر التي تبقى
في هذه الصفحة نوعان مختلفان من التعامل مع المسافات، ومن المفيد ألا تخلط بينهما. القص لأجل المقارنة يبني المفتاح ولا يعدّل أسطرك أبدًا، فالنسخة التي تبقى تحتفظ بمسافاتها الأصلية تمامًا. أما خيارات التنظيف فتفعل العكس: فحذف المسافة البادئة، واختزال سلاسل المسافات وعلامات الجدولة، وقص نهايات الأسطر تعديلات حقيقية، وتحدث قبل حذف أي تكرار، لذا فتفعيل أحدها يغيّر بصمت ما يُعدّ مكررًا، إلى جانب شكل الأسطر.
يُقارَن السطر الفارغ كأي سطر آخر، ما يعني أن كل سطر فارغ بعد الأول يختفي مع بقية المكررات، فالقائمة التي فيها فراغات بين الفقرات تعود بسطر فارغ واحد في موضع الأول. ويعرض تقرير المكررات المفتاح لا سطرك: مقصوصًا، وبأحرف صغيرة إن طلبت تجاهل حالة الأحرف. لذا فالعنصر الذي يظهر في قائمتك بصيغتي Smith وSMITH يُبلغ عنه مرة واحدة، بأحرف صغيرة، وبعدد اثنين. وتقتصر تلك القائمة على الخمسين الأكثر تكرارًا.
أيًا كان ما يدخل، يخرج الناتج مفصولًا بفواصل أسطر (line feed) فقط، لذا تفقد القائمة الملصوقة من ملف Windows علامات الرجوع (carriage return) في الطريق، وهذا ما تريده عادةً، ويستحق المعرفة إن كنت ستلصق النتيجة في شيء يهتم بذلك. وأثر جانبي آخر: تفعيل «تجاهل حالة الأحرف» يغيّر الترتيب إلى جانب المقارنة، ويتوقف الترتيب حينها أيضًا عن التمييز بين الأحرف المُشكَّلة وغير المُشكَّلة، فتظهر resume وrésumé معًا لا متباعدتين.
عندما تحتاج إلى شيء آخر
حين تكون القائمة في الحقيقة جدولًا، فمقارنة الأسطر أداة من الشكل الخطأ. ملف CSV يعني فيه «المكرر» صفين يتفقان في عمود واحد ليس مسألة سلاسل نصية، ومعاملته كذلك إما أن تفوّت المكررات أو تحذف صفوفًا بدت متشابهة فقط. أداة «إزالة التكرارات» في جدول البيانات نفسه تفعل ذلك كما ينبغي لملف مفتوح لديك أصلًا، والأمر mlr uniq -g يفعله في سطر الأوامر بتسمية الحقل الحاسم، وبأي حجم.
لقائمة أكبر من أن تتسع لها علامة تبويب، أو قائمة ستنظّفها مرة أخرى الأسبوع القادم، فسطر الأوامر تعبير واحد يعمل تدفقيًا: awk '!seen[$0]++' يحتفظ بالنسخة الأولى وبالترتيب الأصلي، وهذا بالضبط ما تفعله هذه الصفحة افتراضيًا، على ملف أكبر من ذاكرتك. لا قص فيه، ولا توحيد لحالة الأحرف، ولا تقرير عن المكررات، وهذه هي المقايضة، ولملف من عشرة ملايين سطر فهي المقايضة الصحيحة.
الأسئلة الشائعة
هل تُخزَّن قائمتي في أي مكان؟
لا. لا يُخزَّن أي شيء ولا يُرسَل أي طلب. يمكنك قطع الاتصال بالإنترنت بعد تحميل الصفحة، وستظل تعمل.
لماذا لا تزال هناك أسطر مكررة بعد حذف التكرار؟
السبب في الغالب المسافات في نهايات الأسطر. فسطران ينتهيان بعدد مختلف من المسافات يبدوان متطابقين على الشاشة وهما ليسا كذلك، لذا تحتفظ المقارنة الحرفية بكليهما، فتظن أن الأداة معطلة. ولهذا السبب يكون قص المسافات قبل المقارنة مفعّلًا هنا افتراضيًا. والأهم أنه لا يؤثر إلا في المقارنة: فالسطر الذي يبقى يحتفظ بنصه الأصلي، لأن تعديل أسطرك خلسةً ليس ما يعنيه «حذف المكررات».
أي نسخة يُحتفظ بها؟
الأولى افتراضيًا، ويبقى ترتيب البقية كما هو، وهذا مهم حين تكون القائمة مرتبة أصلًا ترتيبًا له معنى. يمكنك الاحتفاظ بالأخيرة بدلًا منها، أو حذف كل سطر كان له تكرار، فلا يبقى إلا الأسطر التي ظهرت مرة واحدة بالضبط. والخيار الأخير هو طريقة العثور على العناصر التي تنفرد بها قائمة.
لماذا يضع الترتيب item10 قبل item2؟
هذا هو الترتيب الأبجدي العادي، حيث يأتي «1» قبل «2» ولا يُنظر إلى بقية الرقم أبدًا. فعّل الترتيب الطبيعي، وستُقارَن سلاسل الأرقام كأعداد، فيأتي item2 قبل item10، وهو الترتيب الذي يتوقعه الإنسان. كما يُعالَج النص المُشكَّل بشكل صحيح: فالمقارنة البسيطة ترتّب «Zürich» بعد «Zyzzyva»، لأنها تقارن القيم الرقمية الكامنة لا الحروف.
هل تخبرني بما حُذف؟
نعم، تُعرض الأسطر التي ظهرت أكثر من مرة مع عدد مرات ظهورها، من الأكثر تكرارًا إلى الأقل. ومعرفة أي عنصر ظهر أربع مرات أكثر فائدة في العادة من معرفة أن ثلاثة أسطر اختفت.
هل الخلط عشوائي فعلًا؟
نعم. يستخدم خوارزمية Fisher-Yates مع مصدر العشوائية التشفيري في المتصفح. أما الاختصار الشائع، أي الترتيب بمقارنة عشوائية، فليس خلطًا على الإطلاق: فخوارزميات الترتيب تفترض مقارنة متسقة، ومع مقارنة عشوائية تكون النتيجة منحازة بشكل قابل للقياس نحو الترتيب الأصلي. وإن كنت تسحب فائزًا من قائمة، فهذا الفرق مهم.
هل يوجد حد للحجم؟
الحد هو الذاكرة المتاحة، لا حجم ثابت. القوائم التي تضم مئات الآلاف من الأسطر لا مشكلة فيها.
معلومة مفيدة: يعتمد الترتيب على قواعد اللغة في متصفحك، لذا تُرتَّب الأحرف المُشكَّلة والأبجديات المختلفة كما يتوقع القارئ لا بحسب قيم البايتات. وهذا يعني أيضًا أن الترتيب قد يختلف قليلًا بين المتصفحات. والقوائم الكبيرة جدًا تُحمَّل في الذاكرة كاملة.
أضِف هذه الأداة إلى موقعك
مجانية لأي مدونة أو صفحة فصل دراسي أو مقالة مساعدة. الصق مقتطفًا واحدًا وسيتمكن زوارك من استخدامها مباشرةً على صفحتك.