आप अपने awk कमांड को उस कॉलम में बदलें जिसे आप (आपके मामले के तीसरे कॉलम में) के आधार पर डुप्लिकेट की गई लाइनों को हटाने के लिए प्रदर्शन करना चाहते हैं:
awk '!seen[$3]++' filename
यह कमांड बता रही है कि awk
किन लाइनों को प्रिंट करना है। चर $3
स्तंभ 3 की पूरी सामग्री रखता है और वर्ग कोष्ठक सरणी पहुंच है। तो, फ़ाइल नाम में लाइन के प्रत्येक तीसरे कॉलम के लिए, नाम के एरे seen
का नोड बढ़ा हुआ है और यदि उस नोड (कॉलम 3) की सामग्री !
पहले से सेट नहीं थी तो प्रिंट की गई लाइन ।
ऊपर awk
यदि इनपुट फ़ाइल में अपने कॉलम के साथ सीमांकित कर रहे हैं आदेश काम करेंगे space
या Tab
, themself के बीच यदि कॉलम किसी और कार्य में सीमांकित, आप अपनी साथ awk को यह बताने की आवश्यकता -F
विकल्प। उदाहरण के लिए, यदि सभी कॉलम अल्पविराम ( ,
) के साथ सीमांकित होते हैं और तीसरे स्तंभ के उपयोग के -F','
विकल्प के आधार पर लाइनों को हटाना चाहते हैं ।
awk -F',' '!seen[$3]++' filename
-u
केवल डुप्लिकेट लाइनों को हटा देगा , डुप्लिकेट कुंजियों को नहीं ... लेकिन मैं गलत हूं।