प्रत्येक पंक्ति और प्रत्येक कॉलम पर औसत गणना करने के लिए बैश कमांड


0

मान लें कि हमारे पास एक लॉग फ़ाइल है जैसे marks.log और सामग्री कुछ इस तरह दिखती है:

Fname   Lname   Net Algo    
Jack    Miller  15  20  
John    Compton 12  20  
Susan   Wilson  13  19  

मैं एक नया कॉलम जोड़ना चाहता हूं जिसमें प्रत्येक व्यक्ति (पंक्ति) के लिए औसत और एक नई पंक्ति है जिसमें प्रत्येक पाठ्यक्रम (स्तंभ) के लिए औसत शामिल है। मैं बैश करने के लिए नया हूँ मैं छोरों और awk आदि के लिए वाक्यविन्यास का पता नहीं लगा सकता


मैंने awk कमांड की कोशिश की है जो आसानी से प्रत्येक कॉलम पर औसत की गणना करता है। awk '{कुल + = $ 2; count ++} END {प्रिंट कुल / गिनती} 'marks.log लेकिन मैं इसे लूप में काम करने के लिए नहीं बना सकता, इसलिए मुझे प्रत्येक कॉलम के लिए एक awk कमांड लिखना होगा। और मैं पंक्तियों पर औसत गणना नहीं कर सकता।
user1859201

1
इसे CSV में क्यों न बदलें, और संख्याओं का उपयोग क्यों करें? यदि आपके पास बैश का कोई अनुभव नहीं है, तो यह करना आसान होगा। @Patrix में जोड़ने के लिए, आपने जो प्रश्न करने की कोशिश की है, उसे जोड़ें और आपको प्राप्त परिणाम। क्या मैं भी आपके निर्दिष्ट शेल के रूप में मछली का सुझाव दे सकता हूं , यह अधिक अनुकूल और इंटरएक्टिव है। कम अनुभवी उपयोगकर्ताओं के लिए कम डराना।
user14492

जवाबों:


1

अब तक आपने जो किया उसके आधार पर:

awk '{count++; col2 += $2; col3 += $3; print ($2+$3)/2}
     {END print col2/count, col3/count}' marks.log
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.