मेरे पास टर्मिनल में निम्नलिखित जानकारी छपी है और जैसा कि आप पहली और दूसरी पंक्तियों में कॉलम की संख्या देख सकते हैं
Strms Blocks Compressed Uncompressed Ratio Check Filename
1 1 2,526.9 MiB 317.1 GiB 0.008 CRC64 rar.stadium.trace.xz
इसलिए, अगर मैं awk '{print $3 "\t" $4}'
का उपयोग करता हूं, तो मुझे मिलेगा
Compressed Uncompressed
2,526.9 MiB
जो मैं नहीं चाहता। कोई विचार?
2 जवाब
इस तरह प्रत्येक क्षेत्र की चौड़ाई निर्धारित करने के लिए FIELDWIDTHS
पैरामीटर gnu awk
के साथ प्रयोग करें:
xz -l t.xz | awk '{print $3"\t"$4}' FIELDWIDTHS="5 8 13 13 7 7 99"
Compressed Uncompressed
79.7 MiB 553.9 MiB
2,526.9 MiB 317.1 GiB
संपादित करें: यदि आवश्यक हो तो लंबे फ़ाइल नाम को संभालने के लिए अंतिम फ़ाइल सेट 99 पर सेट करें
संपादित करें 2: स्थान और क्षेत्र की लंबाई को बेहतर ढंग से संभालने के लिए
संपादित करें3: FIELDWIDTHS="5 8 13 13 7 7 *"
का उपयोग किया जा सकता है।
यदि आप GNU awk का उपयोग करना चाहते हैं, तो आप FIELDWIDTHS
निर्धारित करने के लिए पहली पंक्ति को पार्स कर सकते हैं:
awk '(NR==1){ for(i=1;i<=NF;++i) {match($0," *"$i); f=f" "RLENGTH};
FIELDWIDTHS=f; $0=$0}
{print $3,$4}'
देखें एडमॉर्टन की टिप्पणी ए> उपरोक्त में सुधार और तर्क के लिए क्यों।
यदि आपके पास GNU awk तक पहुंच नहीं है, तो आप रोबोट मोड का उपयोग करके xz
के आउटपुट को आसानी से पार्स करने योग्य बना सकते हैं:
रोबोट मोड
--robot
विकल्प के साथ सक्रिय होता है। यह xz के आउटपुट को अन्य प्रोग्रामों द्वारा पार्स करना आसान बनाता है। वर्तमान में--robot
केवल--version
,--info-memory
, और--list
के साथ समर्थित है। इसे भविष्य में कंप्रेशन और डीकंप्रेसन के लिए सपोर्ट किया जाएगा।
xz --robot --list
टैब से अलग किए गए आउटपुट का उपयोग करता है। प्रत्येक पंक्ति के पहले कॉलम में एक स्ट्रिंग होती है जो उस पंक्ति पर मिली जानकारी के प्रकार को इंगित करती है:
एकल फ़ाइल के लिए, आप file
पंक्ति में रुचि रखते हैं:
फ़ाइल लाइनों के कॉलम:
- फ़ाइल में धाराओं की संख्या
- स्ट्रीम में ब्लॉक की कुल संख्या
- फ़ाइल का संकुचित आकार
- फ़ाइल का असम्पीडित आकार
- संपीड़न अनुपात, उदाहरण के लिए 0.123। यदि अनुपात 9.999 से अधिक है, तो अनुपात के बजाय तीन डैश (---) प्रदर्शित होते हैं।
- अखंडता जाँच नामों की अल्पविराम से अलग की गई सूची। ज्ञात चेक प्रकारों के लिए निम्न स्ट्रिंग्स का उपयोग किया जाता है: कोई नहीं, CRC32, CRC64, और SHA-256। अज्ञात चेक प्रकारों के लिए, अज्ञात-एन का उपयोग किया जाता है, जहां N एक दशमलव संख्या (एक या दो अंक) के रूप में चेक आईडी है।
- फ़ाइल में स्ट्रीम पैडिंग का कुल आकार
तो आप जिस चीज में रुचि रखते हैं वह है:
xz --robot -l file.xz | awk 'BEGIN{FS=OFS="\t"; print "Compressed", "Uncompressed"}/file/{print $4,$5}'
यदि आप इसे मानव-पठनीय प्रारूप में चाहते हैं, तो आप इस फ़ंक्शन का उपयोग awk में कर सकते हैं:
function tohuman(size, t,u,s) {
split( "B KiB MiB GiB TiB PiB EiB ZiB YiB" , u, " ");
t=size; s=1; while( t>1024 ){ t/=1024; s++ }
return sprintf("%6.1f %s", t, u[s]) }
संबंधित सवाल
नए सवाल
awk
AWK एक व्याख्या की गई प्रोग्रामिंग भाषा है जिसे टेक्स्ट प्रोसेसिंग के लिए डिज़ाइन किया गया है और आमतौर पर इसका उपयोग डेटा निष्कर्षण और रिपोर्टिंग टूल के रूप में किया जाता है। AWK का उपयोग काफी हद तक यूनिक्स सिस्टम के साथ किया जाता है।