मेरे पास इस तरह एक फ़ाइल (user.csv) है
ip,hostname,user,group,encryption,aduser,adattr
उपयोगकर्ता द्वारा सभी स्तंभ प्रकार मुद्रित करना चाहते हैं,
मैंने कोशिश की awk -F ":" '{print|"$3 sort -n"}' user.csv
, यह काम नहीं करता है।
मेरे पास इस तरह एक फ़ाइल (user.csv) है
ip,hostname,user,group,encryption,aduser,adattr
उपयोगकर्ता द्वारा सभी स्तंभ प्रकार मुद्रित करना चाहते हैं,
मैंने कोशिश की awk -F ":" '{print|"$3 sort -n"}' user.csv
, यह काम नहीं करता है।
जवाबों:
कैसे बस sort
?
sort -t, -nk3 user.csv
कहाँ पे
-t,
- अपने सीमांकक को परिभाषित करता है ,
।
-n
- आप संख्यात्मक प्रकार देता है। जब से आपने इसे अपने प्रयास में जोड़ा है। यदि आपका उपयोगकर्ता फ़ील्ड केवल पाठ है तो आपको इसकी आवश्यकता नहीं है।
-k3
- क्षेत्र (कुंजी) को परिभाषित करता है। उपयोगकर्ता तीसरा क्षेत्र है।
sort -t, -nk3 filename.csv | sort -t, -nk6
- पहले यह कॉलम 3 के आधार पर छाँटेगा , फिर कॉलम 6 को छाँटेगा ताकि स्तंभ 6 को सभी तरह से सही ढंग से क्रमबद्ध किया जा सके और किसी भी पंक्तियों के लिए जहाँ स्तंभ 6 समान है, उनको कॉलम 1 द्वारा क्रमबद्ध किया जाएगा ।
sort -t ',' -k3,3n -k6,6n
बेहतर होगा। -k3
कॉलम 3 और शेष पंक्ति का उपयोग करेगा।
डुप्लिकेट उपयोगकर्ता आईडी को हटाने के लिए sed का उपयोग करें, यह मानते हुए कि उपयोगकर्ता आईडी में कोई रिक्त स्थान नहीं है।
awk -F, '{ print $3, $0 }' user.csv | sort | sed 's/^.* //'
sort
पहले से ही जानता है कि किसी विशेष कॉलम को कैसे छांटना है, लेकिन यह तकनीक - जिसे श्वार्ट्जियन ट्रांसफॉर्म के रूप में जाना जाता है - तब उपयोगी होता है जब आप जिस क्षेत्र को छांटना चाहते हैं वह तुच्छ रूप से परिभाषित स्तंभ नहीं है।
आप एक सीमांकक चुन सकते हैं, इस मामले में मैंने एक बृहदान्त्र चुना और वर्णमाला क्रम से छँटते हुए कॉलम नंबर एक को मुद्रित किया:
awk -F\: '{print $1|"sort -u"}' /etc/passwd
इसे इस्तेमाल करे -
awk '{print $0|"sort -t',' -nk3 "}' user.csv
या
sort -t',' -nk3 user.csv
awk -F "," '{print $0}' user.csv | sort -nk3 -t ','
यह काम करना चाहिए
sort -t, -k3 file