"Uniq -t" ne yaptı?


15

2003 -tiçin uniqkomut seçeneğini kullanan bazı eski kod var . Bu seçenek büyük olasılıkla artık desteklenmediğinden hata veriyor.

Komutu kullanan parça:

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

O zamanlar bu seçenek ne yaptı? Bu komutu ne ile değiştirebilirim?



Göre man uniq, -f 1ilk alanı karşılaştıran önler. I anlaması ediyorum -t ':'o -tkadar blanklardan alan seperatör değiştirmek gerekiyordu :.
Martin von Wittich

Olası alakalı: stackoverflow.com/questions/10546337/… Belki -tdaha sonra kaldırılan Debian'a özgü bir seçenekti?
Martin von Wittich


1
Her zaman neden uniqaynı -tve -ksıralama gibi olmadığını ya da sıralama neden tüm özellikleri uniq(şimdi var beri -u) sahip olmadığını merak ettim . Bunlar -w/ -f/ -sGNU ifade etmiyor uniq. Neden aynı sözdizimini kullanamadılar sort.
Stéphane Chazelas

Yanıtlar:


13

Sadece bulabildiğim referans -tolduğu bu yama diğer ipuçları arasında içeren bir GNU posta listesinde, bu:

+  -t, --separator=S     use a character in string S as field separator\n\

Görünüşe göre bu bir GNU uzantısıydı ancak artık kullanılmıyor. Boşluklar veya sekmeler dışındaki alanlar için sınırlayıcı bir karakter seçilmesine izin verdiği görülüyor. Değiştirmeyi deneyin

uniq -t ':' -f 1 | \

ile

sed 's/:/ /' | \
uniq -f 1 | \

Bu, :uniq alan ayırıcısını tanıyan boşluklarla değiştirilir .


Ben düşeceği gdan sedsadece ilk alan atlanır beri. Son satırın çalışması için en az bir kolon gereklidir (umarım ilk satır değil). Yine de çalışacağının garantisi yok (ilk alanlardan herhangi biri boşluk içerebilir)
Graeme

@Graeme İyi bir nokta, düzenlendi.
casey

Debian'da, coreutils 5.2.1 gerçekten böyle bir yama uyguladı ve görünüşe göre 5.93-1'de, yani Kasım 2005'te kaldırıldı.
user2719058

4

Seçenek için mangiriş verildiğinde -f:

-f, --skip-fields = N

         avoid comparing the first N fields

-tAlan ayırıcıyı belirtmek oldukça güvenli olduğunu düşünüyorum (bu aynı zamanda sortyukarıdaki satır için de geçerlidir ). İki seçeneğin birleşimi uniq, hattın yalnızca ilk iki nokta üst üsteyi takip eden kısmında çalışmasını sağlar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.