حذف خطوط تکراری
فهرستی را جایگذاری کنید تا هر خطی که پس از نخستین ظهورش تکرار شده حذف شود و خطوط باقیمانده ترتیب اصلی خود را حفظ کنند. در مقایسه میتوان کوچکی و بزرگی حروف و فاصلههای اضافی را نادیده گرفت، و همهٔ کار در مرورگر شما انجام میشود.
۰ نویسه · ۰ کلمه · ۰ خط
۰ نویسه · ۰ کلمه · ۰ خط
کاملاً در همین زبانه مرورگر اجرا میشود. متن شما هرگز بارگذاری یا ذخیره نمیشود.
چه کار میکند
حذف خطوط تکراری اولین نمونه هر خط را نگه میدارد و تکرارهای بعدی را حذف میکند، بدون اینکه ترتیب اصلی تغییر کند. مقایسه میتواند حروف بزرگ و کوچک و فاصلههای اطراف را نادیده بگیرد و خطوط خالی را میتوان نگه داشت یا حذف کرد.
red blue Red green
red blue green
چه کسانی تکراریهای فهرست را حذف میکنند و چرا
خطوط تکراری معمولاً هنگام ادغام فهرستها پیش میآیند. بازاریابی که دو فهرست ایمیل را کنار هم میگذارد، پژوهشگری که کلمات کلیدی را از چند ابزار جمع میکند، برنامهنویسی که نشانیها را از فایلهای لاگ گرد میآورد، معلمی که نامهای سه فرم ثبتنام را در یک جا میچسباند: همه در نهایت با موردهایی روبهرو میشوند که دو بار یا بیشتر آمدهاند. صفحهگستردهها هم میتوانند موارد تکراری را حذف کنند، اما باید فایل را باز کنید، یک ستون را انتخاب کنید و منوی درست را پیدا کنید؛ وقتی دادهها از قبل در کلیپبورد هستند، چسباندن در یک کادر متنی سریعتر است.
حفظ ترتیب اصلی مهمتر از چیزی است که به نظر میرسد. فهرست مراحل، یک رتبهبندی یا نشانیهایی که به ترتیب خزش ثبت شدهاند، با مرتبسازی معنای خود را از دست میدهند. در اینجا اولین نمونه دقیقاً سر جای خود میماند و تکرارهای بعدی حذف میشوند، و یک شمارنده نشان میدهد چند خط حذف شده است تا بتوانید درستی نتیجه را بسنجید.
مقایسهٔ خطوط چگونه انجام میشود و تفاوتهای نامرئی
هر خط به یک کلید مقایسه تبدیل میشود و همزمان با خواندن فهرست از بالا به پایین در یک مجموعه ذخیره میشود؛ خطی که کلیدش از قبل در مجموعه باشد تکراری است. این کار فقط یک پیمایش لازم دارد، پس فهرستهایی با صدها هزار خط هم سریع پردازش میشوند. این روش با فرمان کلاسیک uniq در یونیکس هم فرق دارد؛ آن فرمان فقط تکرارهای مجاور را حذف میکند و به همین دلیل معمولاً بعد از sort اجرا میشود و ترتیب اصلی از بین میرود. دستور awk '!seen[$0]++' در awk همان کاری را میکند که این ابزار انجام میدهد.
دو خط ممکن است یکسان به نظر برسند و در عمل متفاوت باشند. یک فاصلهٔ انتهایی، یک تب به جای فاصله، یا یک فاصلهٔ ناشکن که از صفحهٔ وب کپی شده، باعث میشود رایانه آنها را رشتههایی متفاوت بداند. حذف فاصلههای ابتدا و انتها را روشن کنید تا فاصلههای دو سر هر خط، از جمله فاصلهٔ ناشکن، نادیده گرفته شوند. حساسیت به حروف بزرگ و کوچک را خاموش کنید تا «Paris» و «paris» یک مورد حساب شوند؛ نگارشی که اول دیده شده بماند. خطوط خالی را میتوان نگه داشت تا بندها از هم جدا بمانند، یا بهکلی حذف کرد.
پس از پاکسازی
فهرست بدون تکرار اغلب مرحلهٔ بعدیاش مرتبسازی است: مرتبسازی خطوط میتواند آن را به ترتیب الفبایی، طبیعی یا بر اساس طول مرتب کند. اگر فهرست از یک PDF یا ایمیلی با خطوط شکسته آمده، ابتدا آن را با دیگر ابزارهای متن اصلاح کنید، چون موردی که میان دو خط شکسته شده با نسخهٔ کامل خودش یکسان شناخته نمیشود.
پرسشهای متداول
- کدام نسخه از یک خط تکراری نگه داشته میشود؟
- اولین مورد. هر خط بعدی با محتوای یکسان حذف میشود و خطوط باقیمانده با همان ترتیب اصلی میمانند، پس چیزی جابهجا نمیشود.
- چرا دو خطی که یکسان به نظر میرسند حذف نمیشوند؟
- تفاوتشان نامرئی است؛ بیشتر وقتها یک فاصلهٔ انتهایی، یک تب یا یک فاصلهٔ ناشکن. گزینهٔ حذف فاصلههای دو سر را روشن کنید، یا اگر فقط حروف بزرگ و کوچک فرق دارند، حساسیت به آنها را خاموش کنید.
- این ابزار چه تفاوتی با دستور uniq دارد؟
- uniq فقط وقتی خطی را حذف میکند که درست با خط بالاییاش یکسان باشد، برای همین معمولاً همراه sort استفاده میشود. این ابزار تکرارها را در هر جای متن پیدا میکند و ترتیب اصلی را حفظ میکند.
- آیا میتوانم همزمان خطوط تکراری را حذف و فهرست را مرتب کنم؟
- ابتدا تکراریها را اینجا حذف کنید، سپس نتیجه را در ابزار مرتبسازی خطوط بچسبانید. با این دو مرحله هر وقت لازم بود ترتیب اولیه را نگه میدارید و فقط هر وقت خواستید مرتب میکنید.