Apa perintah sed / awk yang bisa saya gunakan? Hanya sort -u
akan menghapus semua instance
Memasukkan:
abc
abc
def
abc
abc
def
Output yang diharapkan:
abc
def
abc
def
sumber
Apa perintah sed / awk yang bisa saya gunakan? Hanya sort -u
akan menghapus semua instance
Memasukkan:
abc
abc
def
abc
abc
def
Output yang diharapkan:
abc
def
abc
def
Untuk itulah uniq
perintah standar.
uniq your-file
Perhatikan bahwa beberapa uniq
implementasi seperti GNU uniq
akan memberi Anda yang pertama dari urutan baris yang mengurutkan yang sama (di mana strcoll()
mengembalikan 0) sebagai lawan adalah byte-to-byte identik (di mana memcmp()
atau strcmp()
mengembalikan 0). Untuk memaksa perbandingan byte ke byte terlepas dari uniq
implementasinya, Anda dapat memaksa lokal C
menggunakan:
LC_ALL=C uniq your-file
Vim dapat mencapai ini dengan baik:
:g/\v^(.*\n)\1/d
Atau jika Anda lebih suka menggunakan vim sebagai alat baris perintah, Anda bisa melakukan ini sebagai
vim file -c "g/\v^(.*\n)\1/d" -c "wq"
Dengan cara ini Anda tidak harus bergulat dengan keluar dari vim nanti;)
Penjelasan:
:g/
Di semua lini yang cocok dengan regex ini ...
\v^(.*\n)\1
Setiap baris diikuti dengan sendirinya ...
/d
jalankan perintah d elete (hapus baris saat ini). The -c "wq"
adalah untuk menyimpan perubahan dan keluar.