मैं अद्वितीय रेखाएँ कैसे ढूँढ सकता हूँ और किसी फ़ाइल से सभी डुप्लिकेट निकाल सकता हूँ? मेरी इनपुट फ़ाइल है
1
1
2
3
5
5
7
7
मैं चाहूंगा कि परिणाम:
2
3
sort file | uniq
काम नहीं करेगा 1 बार सभी मान दिखाएगा
मैं अद्वितीय रेखाएँ कैसे ढूँढ सकता हूँ और किसी फ़ाइल से सभी डुप्लिकेट निकाल सकता हूँ? मेरी इनपुट फ़ाइल है
1
1
2
3
5
5
7
7
मैं चाहूंगा कि परिणाम:
2
3
sort file | uniq
काम नहीं करेगा 1 बार सभी मान दिखाएगा
sort file | uniq
सभी मूल्यों को 1 बार दिखाता है क्योंकि यह तुरंत उस रेखा को प्रिंट करता है जो पहली बार सामना करती है, और बाद में होने वाले मुकाबलों के लिए, यह उन्हें छोड़ देता है।
जवाबों:
uniq
आपके लिए आवश्यक विकल्प है:
-u, --unique
only print unique lines
$ cat file.txt
1
1
2
3
5
5
7
7
$ uniq -u file.txt
2
3
निम्नानुसार उपयोग करें:
sort < filea | uniq > fileb
uniq -u filea > fileb
sort<filea.txt | uniq>fileb.txt
:। हो सकता है कि आपने एक्सटेंशन छोड़ दिया हो। मैं एक मैक ओएस एक्स का उपयोग कर रहा हूं। आपको filea.txt
fileb.txt
sort
और uniq
जब आप sort -u file -o file
क्या कर रहे हैं तो पाइप करने की बात यह है कि आप जो कर रहे हैं वह डुप्लिकेट मानों को दूर कर रहा है यानी आपके ओपी में केवल अद्वितीय लाइनें हैं जो है और जो फ़ाइल एक्सटेंशन द्वारा हासिल की गई है, fileb
उसमें कुछ भी नहीं है इसके साथ, आपका जवाब गलत है। 1,2,3,5,7
2,3
uniq -u file
तुम भी बाहर अनूठा मूल्य "फाइल" में का उपयोग करके प्रिंट कर सकता है cat
आदेश के पाइप से sort
औरuniq
cat file | sort | uniq -u
uniq -u मुझे पागल कर रहा है क्योंकि यह काम नहीं करता था।
तो इसके बजाय, यदि आपके पास अजगर है (सबसे लिनक्स डिस्ट्रोस और सर्वर पहले से ही है):
#Python
#Assuming file has data on different lines
#Otherwise fix split() accordingly.
uniqueData = []
fileData = open('notUnique.txt').read().split('\n')
for i in fileData:
if i.strip()!='':
uniqueData.append(i)
print uniqueData
###Another option (less keystrokes):
set(open('notUnique.txt').read().split('\n'))
सिर्फ FYI करें, uniq मैन पेज से:
"ध्यान दें: 'uniq' तब तक बार-बार लाइनों का पता नहीं लगाता है जब तक कि वे आसन्न न हों। आप पहले इनपुट को सॉर्ट करना चाहते हैं, या 'यूनीक' के बिना 'सॉर्ट-यू' का उपयोग कर सकते हैं। इसके अलावा, 'LC_CLLATE' द्वारा निर्दिष्ट नियमों का तुलनात्मक सम्मान करते हैं।"
सही तरीकों में से एक, के साथ आह्वान करने के लिए: # सॉर्ट nonUnique.txt | uniq
$ cat x
3
1
2
2
2
3
1
3
$ uniq x
3
1
2
3
1
3
$ uniq -u x
3
1
3
1
3
$ sort x | uniq
1
2
3
uniq -u < file
नौकरी करेंगे।
uniq
यदि आप फ़ाइल को ठीक कर रहे हैं तो उसे ठीक किया जाना चाहिए / यदि आप किसी ऐसे कारण से फ़ाइल को सॉर्ट नहीं कर सकते, जिसका आप उपयोग कर सकते हैं awk
:
awk '{a[$0]++}END{for(i in a)if(a[i]<2)print i}'
sort -d "file name" | uniq -u
यह मेरे लिए एक समान काम करता है। यदि यह व्यवस्था नहीं है तो इसका उपयोग करें यदि आप इसे व्यवस्थित करते हैं तो आप इसे हटा सकते हैं
मुझे यह आसान लगता है।
sort -u input_filename > output_filename
-u
अद्वितीय के लिए खड़ा है।
यह पहला प्रयास था
skilla:~# uniq -u all.sorted
76679787
76679787
76794979
76794979
76869286
76869286
......
एक बिल्ली करने के बाद-सभी
skilla:~# cat -e all.sorted
$
76679787$
76679787 $
76701427$
76701427$
76794979$
76794979 $
76869286$
76869286 $
प्रत्येक दूसरी पंक्ति में एक अनुगामी स्थान होता है :( सभी अनुगामी स्थानों को हटाने के बाद यह काम करता है!
धन्यवाद
sort file | uniq -u
आपके लिए सांत्वना देने के लिए आउटपुट देगा।