`Uniq -t` क्या किया?


15

मेरे पास 2003 से कुछ पुराने कोड हैं जो कमांड के -tलिए विकल्प का उपयोग करते हैं uniq। यह एक त्रुटि फेंकता है क्योंकि विकल्प शायद अब समर्थित नहीं है।

यहाँ वह टुकड़ा है जो कमांड का उपयोग करता है:

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

उस विकल्प ने फिर क्या किया? मैं उस आदेश को किसके साथ प्रतिस्थापित कर सकता हूं?



के अनुसार man uniq, -f 1पहले क्षेत्र की तुलना से बचा जाता है। मुझे लगता है -t ':'कि -tरिक्त स्थान से फ़ील्ड सेपरेटर को बदलने के लिए माना जाता है :
मार्टिन वॉन विटिच

संभवतः प्रासंगिक: stackoverflow.com/questions/10546337/… शायद -tएक डेबियन-विशिष्ट विकल्प था जिसे बाद में हटा दिया गया था?
मार्टिन वॉन विटिच

1
संभवतः प्रासंगिक: bugs.debian.org/cgi-bin/bugreport.cgi?bug=117016
मार्टिन वॉन

1
मैं हमेशा सोचता था कि uniqसमान -tऔर समान क्यों नहीं है -kया क्यों सॉर्ट में uniqनिगमित की सभी विशेषताएं नहीं हैं (क्योंकि अब यह है -u)। GNU यूनीक से उन -w/ -f/ -sको कोई मतलब नहीं है। क्यों वे एक ही वाक्यविन्यास का उपयोग नहीं कर सकते थे sort
स्टीफन चेजलस

जवाबों:


13

एकमात्र संदर्भ जो मुझे मिल सकता है -tवह एक GNU मेलिंग सूची में इस पैच में है, जिसमें अन्य सुराग शामिल हैं:

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

यह स्पष्ट रूप से एक GNU एक्सटेंशन था लेकिन अब उपयोग में नहीं है। यह रिक्त स्थान या टैब के अलावा अन्य क्षेत्रों के लिए परिसीमन चरित्र का चयन करने की अनुमति देता है। बदलने का प्रयास करें

uniq -t ':' -f 1 | \

साथ में

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

जो उन :रिक्त स्थानों को बदल देगा जो uniq क्षेत्र विभाजक को पहचानते हैं।


मैं छोड़ देगी gसे sed, के बाद से ही पहले क्षेत्र को छोड़ दिया है। काम करने के लिए अंतिम पंक्ति के लिए कम से कम एक बृहदान्त्र की आवश्यकता होती है (उम्मीद है कि पहले नहीं)। फिर भी कोई गारंटी नहीं है कि यह काम करेगा (पहले क्षेत्रों में से किसी में भी व्हॉट्सएप हो सकता है)
ग्रीम

@ ग्रेमी गुड पॉइंट, संपादित।
केसी

डेबियन में, कोरुटिल्स 5.2.1 में वास्तव में ऐसा पैच लगाया गया था, और जाहिर तौर पर इसे 5.93-1 में हटा दिया गया था, यानी नवंबर 2005 में।
user2719058

4

विकल्प के manलिए प्रविष्टि को देखते हुए -f:

-फ, --स्किप-फील्ड = एन

         avoid comparing the first N fields

मुझे लगता है कि यह मान लेना काफी सुरक्षित है कि यह -tक्षेत्र विभाजक को निर्दिष्ट करता है (यह sortऊपर की पंक्ति के मामले में भी है)। दो विकल्पों का संयोजन uniqकेवल पहले कोलन के बाद लाइन के हिस्से पर काम करेगा ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.