# حذف خطوط تکراری در لینوکس
### مرتبسازی و پاکسازی فایلهای متنی با ابزارهای خط فرمان
در پردازش فایلهای متنی، ممکن است با خطوط تکراری روبهرو شویم؛ مخصوصاً در لیستها، گزارشها، یا خروجی برنامهها. لینوکس ابزارهای ساده و قدرتمندی برای **شناسایی و حذف خطوط تکراری** دارد.
---
## ✅ روش 1: استفاده از دستور `uniq`
```bash
uniq input.txt
```
### نکته مهم:
`uniq` فقط **خطوط تکراریِ پشتسرهم** را شناسایی و حذف میکند. برای عملکرد صحیح باید ابتدا فایل را **مرتبسازی** کرد.
### حذف تکراریها بهصورت کامل:
```bash
sort input.txt | uniq
```
---
## 📂 ذخیره خروجی در فایل جدید
```bash
sort input.txt | uniq > cleaned.txt
```
---
## 🔢 شمارش تعداد تکرار هر خط:
```bash
sort input.txt | uniq -c
```
### خروجی نمونه:
```
1 apple
3 banana
2 orange
```
---
## ❌ فقط نمایش خطوط تکراری:
```bash
sort input.txt | uniq -d
```
---
## 🆚 فقط نمایش خطوط یکتا (غیرتکراری):
```bash
sort input.txt | uniq -u
```
---
## 🧰 روش 2: استفاده از awk برای حذف خطوط تکراری بدون نیاز به sort
```bash
awk '!seen[$0]++' input.txt
```
- این دستور **خطوط تکراری را از هرجای فایل** (نه فقط پشت سر هم) حذف میکند.
- مرتبسازی لازم نیست.
---
## 🔄 روش 3: با استفاده از `sort -u`
اگر فقط هدف حذف تکراریها و مرتبسازی باشد، این سادهترین روش است:
```bash
sort -u input.txt
```
---
## مقایسه سریع دستورات
| دستور | کاربرد |
|--------|--------|
| `uniq` | حذف خطوط تکراری پشتسرهم |
| `sort | uniq` | حذف تمام خطوط تکراری |
| `sort -u` | مرتبسازی + حذف تکراریها |
| `awk '!seen[$0]++'` | حذف تکراری از کل فایل بدون نیاز به مرتبسازی |
| `uniq -d` | فقط خطوط تکراری |
| `uniq -u` | فقط خطوط غیرتکراری |
---
## نمونه فایل ورودی
```
apple
banana
apple
orange
banana
banana
```
### خروجی پس از اجرای:
```bash
sort input.txt | uniq
```
```
apple
banana
orange
```