कैसे सॉर्ट करें ताकि एक्सएमएल में सी के बाद ऊंट हो?


0

लाइनों के साथ एक फ़ाइल को सॉर्ट करना

<LexerType name="caml" desc="Caml" ext="">
<LexerType name="c" desc="C" ext="">

कैमल को सी से पहले होने का कारण बनता है, मैं इस फ़ाइल के चरित्र पदों पर भरोसा किए बिना, सामान्य रूप से पहले सी कैसे डालूं?


1
आप लाइनों को क्रमबद्ध करने के लिए किस कार्यक्रम का उपयोग कर रहे हैं, और आप इसे कैसे लागू कर रहे हैं? बस एक उपचुनाव तुलना करने से आपको आपके इच्छित परिणाम प्राप्त होने चाहिए।
jwodder

मैं सॉर्ट (GNU कोरुटिल्स) 8.5 का उपयोग कर रहा हूं।
nnn

मेरे लिए, बस sortउन दो लाइनों पर चलने से "सी" लाइन "कैमल" लाइन से पहले प्रिंट हो सकती है, इसलिए कुछ और चल रहा होगा। क्या "कैमल" लाइन में आपकी फ़ाइल में अतिरिक्त प्रमुख व्हाट्सएप है?
jwodder

हां, दोनों पंक्तियों में प्रमुख रिक्त स्थान की समान मात्रा है।
nnn

1
सॉर्ट इनविटेशन से पहले LC_ALL = C जोड़ने का प्रयास करें, जैसे "LC_ALL = C सॉर्ट ...", शायद यह एक स्थानीय मुद्दा है, इस प्रकार आपको अजीब तरह का ऑर्डर मिल रहा है।
21

जवाबों:


0

का उपयोग करते हुए sort

$ sort -t\" -k2,2 file.xml
<LexerType name="c" desc="C" ext=""/>
<LexerType name="caml" desc="Caml" ext=""/>

   -k, --key=POS1[,POS2]
          start a key at POS1, end it at POS2 (origin 1)
   -t, --field-separator=SEP
          use SEP instead of non-blank to blank transition

का उपयोग करते हुए vim

:%sort /name=/

या

:%sort r /name="\w*"/

:[range]sor[t][!] [i][u][r][n][x][o] [/{pattern}/]

                    When /{pattern}/ is specified and there is no [r] flag
                    the text matched with {pattern} is skipped, so that
                    you sort on what comes after the match.
                    Instead of the slash any non-letter can be used.
                    For example, to sort on the second comma-separated
                    field: >
                            :sort /[^,]*,/
                    To sort on the text at virtual column 10 (thus
                    ignoring the difference between tabs and spaces): >
                            :sort /.*\%10v/
                    To sort on the first number in the line, no matter
                    what is in front of it: >
                            :sort /.*\ze\d/

                    With [r] sorting is done on the matching {pattern}
                    instead of skipping past it as described above.
                    For example, to sort on only the first three letters
                    of each line: >
                            :sort /\a\a\a/ r
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.