2010-11-04 10 views
5

मैं ASCII कोड के अनुसार यूनिक्स sort कमांड (जीएनयू 5.97 या 7.4) का उपयोग करके टेक्स्ट फ़ाइल को सॉर्ट करने का प्रयास कर रहा हूं। फ़ाइल में लाइनों में एक कॉलम होता है, जिसे कुंजी में कुंजी के रूप में उपयोग किया जाता है।यूनिक्स अल्फान्यूमेरिक कैरेक्टर के संयोजन की कुंजी और ':', '/'

chr1:110170896:NM_004037:0:1:0/1 
chr1:110170897:NM_004037:0:1:0/1 
chr11:10325325:chr11:0:1:0/1 
chr11::0325325:chr11:0:1:0/1 

: की ascii कोड 58 है, और जब मैं sort -k 1,1 temp.txt साथ फ़ाइल को सॉर्ट 1 हालांकि 49 है, उत्पादन इस तरह है,

chr11::0325325:chr11:0:1:0/1 
chr1:110170896:NM_004037:0:1:0/1 
chr1:110170897:NM_004037:0:1:0/1 
chr11:10325325:chr11:0:1:0/1 

परिणाम से, मैं नहीं है विचार करें कि 1 और : के बीच ऑर्डर कैसे निर्धारित करता है। यदि कोई निश्चित आदेश था, तो पहले और आगे की लाइनों को एक साथ रखा जाना चाहिए।

आदर्श रूप से, मुझे एएससीआईआई कोड के अनुसार बाएं चरित्र से कुंजी को सही चरित्र में सॉर्ट करने की उम्मीद है।

उत्तर

3

कैसे करें के बारे

sort -t : -k 1 filename 

का उपयोग कर: एक फ़ील्ड परिसीमक

3

जीएनयू प्रकार के लिए आदमी पृष्ठ से के रूप में:

* चेतावनी * स्थान पर्यावरण द्वारा निर्दिष्ट को प्रभावित करता है क्रमबद्ध आदेश। स्थानीय बाइट मानों का उपयोग करने वाले पारंपरिक सॉर्ट ऑर्डर प्राप्त करने के लिए LC_ALL = C सेट करें।

LC_ALL=C sort text का उपयोग करते हुए मेरी मशीन पर (जहां text एक फ़ाइल है जहाँ मैं अपने नमूना डेटा की नकल की है) सॉर्ट क्रम आप चाहते हैं देता है।

फिर भी क्यों chr11 हालांकि मूल उदाहरण में नहीं तरह एक साथ करता है के लिए कोई स्पष्टीकरण ...

+0

धन्यवाद, यह – Xatan

2

sort स्थान संवेदनशील है। यह आपकी लोकेल सेटिंग से प्रभावित होगा।

आपको ASCII आदेश पर वापस जाने के लिए भाषा को C पर सेट करने का प्रयास करना चाहिए।

LANG=C sort -k 1,1 temp.txt रूप में चलाते हैं या अपने वातावरण चर

सेट आप गलत आदेश के एक स्पष्टीकरण की जरूरत है, यह अपने स्थान/LANG कारण बाहर खुदाई करने के लिए वातावरण देने के लिए बेहतर होगा कहते हैं।

+0

धन्यवाद काम करता है, यह काम करता है – Xatan

संबंधित मुद्दे