तारांकन की तरह 'वर्ण' विशेष वर्णों की उपेक्षा क्यों करता है?


27

मैंने सोचा था कि sortएक साथ सामान्य उपसर्गों को सॉर्ट करूंगा लेकिन ऐसा हमेशा नहीं होता है। उदाहरण के लिए इस इनपुट को लें:

AT0S*eightieths
AT0S*eyetooth's
AT*ad
AT*Ad
AT*AD
AT*Eydie
AT*eyed
ATF*adv
ATF*ATV
ATF*edify
ATF*Ediva
ATFKT*advocate
ATFKTNK*advocating
ATFKT*outfought
ATFKTS*advocates
ATHT*whitehead
ATHT*Whitehead
AT*id
AT*I'd
AT*Ito
AT*IUD
ATJ*adage
ATNXNS*attention's
ATNXNS*attenuation's
ATNXNS*autoignition's
AT*oat
AT*OD
AT*outweigh
AT*owed
ATP0K*idiopathic
ATP*adobe
ATT*wighted
ATT*witted
ATT*wooded
AT*UT
AT*Uta
AT*wowed
AT*Wyatt
ATX*atishoo

के बाद sort, मुझे उम्मीद है कि सभी एक ही समय AT*में समाप्त हो जाएंगे, लेकिन जब आप इस डेटा sortको आउटपुट ==इनपुट के माध्यम से चलाते हैं । ऐसा क्यों है? मैं गैर-अक्षर वर्ण या किसी भी चीज़ को अनदेखा करने के लिए किसी भी विकल्प को निर्दिष्ट नहीं कर रहा हूँ। बस sort dict > out

मेरे संस्करण से sortआता है coreutils 8.5-1ubuntu3


मेरे लिये कार्य करता है। हो सकता है कि कोई अन्य कहीं?
मैथ्यू कार्टियर

जवाबों:


17
sort --version-sort filename 

यह संख्याओं के प्राकृतिक क्रम को संरक्षित करता है।


4
+1 यह काम करता है लेकिन क्यों? पाठ में केवल कुछ एकल अंक हैं।
आरोन दिगुल्ला

2
पर्यावरण को बदलने की आवश्यकता के बिना काम करता है, +1
मेरेडिथ

@AaronDigulla: मुझे संदेह है कि यह चीजों को सॉर्ट करने के लिए लगभग सबसे विनम्र तरीके के रूप में संस्करण प्रकार में तार का व्यवहार करता है, इसलिए यह लोकेल को अनदेखा करता है और केवल एक विशेष तरीके से संख्याओं को संभालता है।
जॉनये

23

LC_ALL = C को सेट करना मेरे मामले में पारंपरिक सॉर्टिंग क्रम को बहाल करता है। पैकेज: कोरुटिल्स संस्करण: 8.5-1ubuntu3

export LC_ALL=C 

LANG=Cभी काम करता है। मुझे क्या पहेलियाँ: के LANGलिए सेट किया गया है en_US.UTF-8; क्यों *अभी भी विशेष माना जाता है ??
आरोन दिगुल्ला

2
LC_COLLATEवह सेटिंग है जो विशिष्ट है sort, आदि
आगे की सूचना तक रोक दी गई।

मेरे लिए रास्पियन // पिक्सेल में काम करता है ... विशेष आकर्षण की अनदेखी की तरह 'झुंझलाहट' मुझे मार रहा था ... धन्यवाद।
ZEE

2
कोई ज़रूरत नहीं है exportया यहां तक ​​कि स्थानीय सेट और संभवतः किसी और चीज़ के साथ गड़बड़ करने के लिए। बस इसे सॉर्ट करने के लिए कॉल में सेट करें LC_ALL=C sort:। जैसे echo -e 'a\n*\n*b\nc' | LC_ALL=C sort, LC_ALL को सॉर्ट करने के लिए कॉल के बाहर नहीं बदला जाएगा
Hashbrown

1

यह मेरे लिए (साइबरविन पर) उम्मीद के मुताबिक काम करता है।

sort input > output का परिणाम

एक बालक
एक बालक
एटी * Eydie
एटी * मैं था
एटी * आईयूडी
एटी * इतो
एटी * आयुध डिपो
एटी * केन्द्र शासित प्रदेशों
एटी * Uta
एटी * व्याट
एक बालक
एटी * आंखों
* आईडी
* जई एटी
एटी * पल्ला झुकना
एटी * बकाया
एटी * wowed
AT0S eightieths *
AT0S * eyetooth के
एटीएफ * एटीवी
एटीएफ * Ediva
एटीएफ * adv
एटीएफ * उपदेश देना
ATFKT * वकील
ATFKT * outfought
ATFKTNK * वकालत
ATFKTS अधिवक्ताओं *
ATHT * व्हाइटहेड
ATHT * व्हाइटहेड
ATJ * कहावत
ATNXNS * ध्यान के
ATNXNS * क्षीणन की
ATNXNS * autoignition के
एटीपी * एडोब
ATP0K * अज्ञातहेतुक
ATT * wighted
ATT * बुद्धि
ATT * जंगली
ATX * atishoo

क्या किसी चीज़ की तरह अलियास है? प्रयत्न\sort

भी

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


कोई अन्य नहीं। कुछ ubuntu / debian विशिष्ट विशेषता होना चाहिए।
आरोन दिगुल्ला

1

संस्करण: सॉर्ट (GNU कोरुटिल्स) 8.26

मैं इसे इनलाइन करता हूं:

LANG=C sort FILE

या फ़ंक्शन द्वारा (मूल फ़ाइल में परिवर्तन):

dosort() { local file="$*"; LANG=C sort ${file} -o ${file}.swp; mv ${file}.swp ${file}; cat ${file} ;}

1

दूसरों की टिप्पणियों के आधार पर एक सरल उत्तर प्रदान करने के लिए, जो आपके पर्यावरण को नहीं बदलता है:

input_program | LC_COLLATE=C sort | output_program

या

LC_COLLATE=C sort < input_file > output_file

या उसके संयोजन।


0

GNU सॉर्ट के साथ आप उपयोग कर सकते हैं --dictionary-order:

NAME
       sort - sort lines of text files

SYNOPSIS
       sort [OPTION]... [FILE]...
       sort [OPTION]... --files0-from=F

DESCRIPTION
       Write sorted concatenation of all FILE(s) to standard output.

       With no FILE, or when FILE is -, read standard input.

       Mandatory arguments to long options are mandatory for short options too.  Ordering options:

       -b, --ignore-leading-blanks
              ignore leading blanks

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