Ini pertanyaan / jawaban memiliki beberapa solusi yang baik untuk menghapus baris identik dalam sebuah file, tapi tidak akan bekerja dalam kasus saya sejak dinyatakan duplikat garis memiliki catatan waktu.
Apakah mungkin untuk memberitahu awk untuk mengabaikan 26 karakter pertama dari suatu baris dalam menentukan duplikat?
Contoh:
[Fri Oct 31 20:27:05 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:10 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:13 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:16 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:21 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:22 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:23 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:24 2014] The Brown Cow Jumped Over The Moon
Akan menjadi
[Fri Oct 31 20:27:24 2014] The Brown Cow Jumped Over The Moon
(menjaga stempel waktu terkini)
text-processing
awk
duplicate
deduplication
seorang programmer
sumber
sumber
Jawaban:
Anda bisa menggunakan
uniq
dengan-f
opsi ini:Dari
man uniq
:Sebenarnya ini akan menampilkan baris pertama:
Jika itu masalah yang bisa Anda lakukan:
atau jika Anda tidak memiliki
tac
tetapitail
dukungan Anda-r
:sumber
sumber
Coba yang ini:
sumber
Sebuah
perl
solusi:sumber
Seseorang dapat menggunakan kekuatan
vim
:Sangat mudah. Jika Anda memiliki beberapa file lagi (seperti log yang diputar gzip ),
vim
akan membukanya tanpa kompresi awal di sisi Anda dan Anda dapat mengulangi perintah terakhir dengan menekan :dan ↑. Sama seperti mengulangi perintah terakhir di terminal.sumber