टेक्स्ट फ़ाइल से केवल डुप्लिकेट मान कैसे प्रिंट करें?


68

मान लीजिए कि निम्नलिखित जैसे संख्यात्मक मानों का एक स्तंभ है:

file1:

1 
2
3
3
3
4
4
4
5
6

मुझे आउटपुट चाहिए:

3  
4

यानी केवल बार-बार की जाने वाली लाइनें। क्या लिनक्स में इसका पता लगाने के लिए कोई कमांड लाइन उपकरण हैं? (NB: मान संख्यात्मक रूप से क्रमबद्ध हैं)।


3
देखते हैं man uniq
जस्नोवरीयन

जवाबों:


118

आप इसके लिए उपयोग कर सकते हैं uniq(1):

uniq -d file.txt

यह केवल डुप्लिकेट को प्रिंट करेगा। इनपुट फ़ाइल को इस तरह क्रमबद्ध करने की आवश्यकता है कि सभी डुप्लिकेट लगातार हैं (जो वे प्रतीत होते हैं), इसलिए इसे सॉर्ट के माध्यम से पहले चलाएं यदि यह नहीं है।


1
क्या होगा यदि मैं चाहता हूं कि केवल तीन प्रतियों को मुद्रित किया जाए?
MiNdFrEaK

8
Triplicates के sort | uniq -c | grep '^\s*3\s' | sed 's/^\s*[0-9]*\s*//'लिए @MiNdFrEaK ; N-plicates के लिए किसी भी N के साथ "3" को बदलें
full.stack.ex

@MiNdFrEaK ट्रिपल के sort | uniq -c | sed -n 's/^[[:blank:]]*3[[:blank:]]\{1,\}//p'लिए

@ क्या आप सीएसवी फाइलों पर भी ऐसा कर सकते हैं? एक निश्चित कॉलम के केवल मान?
न्यूमेनफोरलाइफ

1
Sort file.txt | uniq -d
रॉन

1

उपयोग करना uniqऔर awk:

cat File1  | uniq -c | awk '$1 > 1 { print $2 }'

6
यह काम करता है, लेकिन मैं यह नहीं देखता कि आप इसका उत्पादन क्यों करते हैं cat?
बर्नहार्ड

1
हर कोई नहीं जानता कि आप कर सकते हैं uniq -c File1और इसी तरह कई अन्य उपकरणों के साथ। शायद यही यहां चल रहा है।
मथायस

1

इसे निष्पादित करें: perl -ne 'print if $a{$_}++' filename.txt


यह 3\n3\n4\n\4nइनपुट File1 के लिए देता है जो स्पष्ट रूप से गलत है।
ययगाशी

पर्ल स्निप मुझे लगता है कि अपने आप को फिर से देखना प्रत्येक पंक्ति के घटनाओं की संख्या प्रदान करता है ताकि इसे आवश्यकतानुसार पाइप किया जा सके, छाँटा जा सके और फ़िल्टर किया जा सके: perl -ne '$ a {$ _} ++; END {जबकि (($ k, $ v) = प्रत्येक% a) {प्रिंटफ "% d \ t% s", $ v, $ k}} 'फ़ाइल नाम
Theophrastus

क्या ऐसा करने का कोई तरीका है जो किसी विशिष्ट फ़ील्ड पर दिए गए विभाजक द्वारा अलग किया जाता है?
गेरमीया

जैसा कि ययागशी ने संकेत दिया, आवश्यकताओं को पूरा करने के लिए एक छोटे से फिक्स की आवश्यकता होती है: perl -ne 'प्रिंट अगर 1 == $ a {$ _} ++' filename.txt सभी उत्तरों में से, यह मेरा पसंदीदा है, क्योंकि अन्य उत्तर एक पूर्ण प्रकार के साथ सभी डेटा को प्रीप्रोसेस करने की आवश्यकता है। यह उत्तर आउटपुट परिणामों को अधिक तेज़ी और कुशलता से शुरू करता है।
BOC
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.