Saya memiliki beberapa kode lama dari tahun 2003 yang menggunakan -t
opsi untuk uniq
perintah. Itu melempar kesalahan karena opsi itu mungkin tidak didukung lagi.
Inilah bagian yang menggunakan perintah:
egrep -n "{ IA32_OP" ia32-decode.c | \
awk '{ print $1 $3 $4 }' | \
sort -t '(' +1 | \
uniq -t ':' -f 1 | \
sed 's/\(.*\)\:IA32_OP(\(.*\)),/#define IA32_OP_\2 \1/g' >> ia32_opcodes.h
Apa yang dilakukan opsi itu saat itu? Dengan apa saya bisa mengganti perintah itu?
man uniq
,-f 1
hindari membandingkan bidang pertama. Saya menyimpulkan dari-t ':'
yang-t
seharusnya mengubah pemisah bidang dari kosong ke:
.-t
pilihan khusus Debian yang kemudian dihapus?uniq
tidak memiliki yang sama-t
dan-k
sebagai semacam atau mengapa semacam tidak memiliki semua fitur yanguniq
dimasukkan (karena sekarang memiliki-u
). Mereka-w
/-f
/-s
dari GNU uniq tidak masuk akal. Mengapa mereka tidak bisa menggunakan sintaks yang sama dengansort
.Jawaban:
Satu-satunya referensi yang dapat saya temukan
-t
adalah dalam tambalan ini di milis GNU, yang berisi di antara petunjuk lainnya, ini:Ini tampaknya adalah ekstensi GNU tetapi tidak lagi digunakan. Tampaknya memungkinkan pemilihan karakter pembatas untuk bidang selain spasi atau tab. Coba ganti
dengan
yang akan diganti
:
dengan spasi yang uniq mengenali pemisah bidang.sumber
g
darised
, karena hanya bidang pertama yang dilewati. Setidaknya diperlukan satu titik dua agar baris terakhir berfungsi (semoga bukan yang pertama). Namun tetap tidak ada jaminan itu akan berhasil (salah satu bidang pertama mungkin berisi spasi putih)Diberikan
man
entri untuk-f
opsi:Saya pikir cukup aman untuk mengasumsikan yang
-t
menentukan pemisah bidang (ini juga terjadisort
pada baris di atas). Kombinasi dari dua opsi akan membuatuniq
hanya beroperasi pada bagian dari garis mengikuti titik dua pertama.sumber