How to sum specific rows using awk and other methods?












1















123|Raghu|80|90|60

234|Maya|10|20|30

123|Atul|20|30|60

413|Gita|56|71|89

745|Mohan|22|100|23


This is my text file where I need to sum the marks of each student and print them line by line.










share|improve this question




















  • 1





    Let's see what you want it to look like!

    – George Udosen
    Jan 26 at 8:12











  • Raghu 230 and so on for other names

    – Mohammed Affan
    Jan 26 at 8:18
















1















123|Raghu|80|90|60

234|Maya|10|20|30

123|Atul|20|30|60

413|Gita|56|71|89

745|Mohan|22|100|23


This is my text file where I need to sum the marks of each student and print them line by line.










share|improve this question




















  • 1





    Let's see what you want it to look like!

    – George Udosen
    Jan 26 at 8:12











  • Raghu 230 and so on for other names

    – Mohammed Affan
    Jan 26 at 8:18














1












1








1








123|Raghu|80|90|60

234|Maya|10|20|30

123|Atul|20|30|60

413|Gita|56|71|89

745|Mohan|22|100|23


This is my text file where I need to sum the marks of each student and print them line by line.










share|improve this question
















123|Raghu|80|90|60

234|Maya|10|20|30

123|Atul|20|30|60

413|Gita|56|71|89

745|Mohan|22|100|23


This is my text file where I need to sum the marks of each student and print them line by line.







grep awk






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Feb 7 at 3:27









Robert Longson

271411




271411










asked Jan 26 at 7:52









Mohammed AffanMohammed Affan

61




61








  • 1





    Let's see what you want it to look like!

    – George Udosen
    Jan 26 at 8:12











  • Raghu 230 and so on for other names

    – Mohammed Affan
    Jan 26 at 8:18














  • 1





    Let's see what you want it to look like!

    – George Udosen
    Jan 26 at 8:12











  • Raghu 230 and so on for other names

    – Mohammed Affan
    Jan 26 at 8:18








1




1





Let's see what you want it to look like!

– George Udosen
Jan 26 at 8:12





Let's see what you want it to look like!

– George Udosen
Jan 26 at 8:12













Raghu 230 and so on for other names

– Mohammed Affan
Jan 26 at 8:18





Raghu 230 and so on for other names

– Mohammed Affan
Jan 26 at 8:18










1 Answer
1






active

oldest

votes


















0














You don't need awk for this, a bash script will do:



#!/bin/bash
IFS='|'
while read -r -a array line
do
i=0;sum=0;line=""
for element in "${array[@]}"
do
if [ $i -gt 1 ]
then
let sum=sum+$element
else
line=$line$element$IFS
fi
let i=i+1
done
echo "$line$sum"
done < "${1:-/dev/stdin}"


If the above script is called process and your data file is called data, running



process < data


will produce



123|Raghu|230
234|Maya|60
123|Atul|110
413|Gita|216
745|Mohan|145





share|improve this answer























    Your Answer








    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "89"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1112998%2fhow-to-sum-specific-rows-using-awk-and-other-methods%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    You don't need awk for this, a bash script will do:



    #!/bin/bash
    IFS='|'
    while read -r -a array line
    do
    i=0;sum=0;line=""
    for element in "${array[@]}"
    do
    if [ $i -gt 1 ]
    then
    let sum=sum+$element
    else
    line=$line$element$IFS
    fi
    let i=i+1
    done
    echo "$line$sum"
    done < "${1:-/dev/stdin}"


    If the above script is called process and your data file is called data, running



    process < data


    will produce



    123|Raghu|230
    234|Maya|60
    123|Atul|110
    413|Gita|216
    745|Mohan|145





    share|improve this answer




























      0














      You don't need awk for this, a bash script will do:



      #!/bin/bash
      IFS='|'
      while read -r -a array line
      do
      i=0;sum=0;line=""
      for element in "${array[@]}"
      do
      if [ $i -gt 1 ]
      then
      let sum=sum+$element
      else
      line=$line$element$IFS
      fi
      let i=i+1
      done
      echo "$line$sum"
      done < "${1:-/dev/stdin}"


      If the above script is called process and your data file is called data, running



      process < data


      will produce



      123|Raghu|230
      234|Maya|60
      123|Atul|110
      413|Gita|216
      745|Mohan|145





      share|improve this answer


























        0












        0








        0







        You don't need awk for this, a bash script will do:



        #!/bin/bash
        IFS='|'
        while read -r -a array line
        do
        i=0;sum=0;line=""
        for element in "${array[@]}"
        do
        if [ $i -gt 1 ]
        then
        let sum=sum+$element
        else
        line=$line$element$IFS
        fi
        let i=i+1
        done
        echo "$line$sum"
        done < "${1:-/dev/stdin}"


        If the above script is called process and your data file is called data, running



        process < data


        will produce



        123|Raghu|230
        234|Maya|60
        123|Atul|110
        413|Gita|216
        745|Mohan|145





        share|improve this answer













        You don't need awk for this, a bash script will do:



        #!/bin/bash
        IFS='|'
        while read -r -a array line
        do
        i=0;sum=0;line=""
        for element in "${array[@]}"
        do
        if [ $i -gt 1 ]
        then
        let sum=sum+$element
        else
        line=$line$element$IFS
        fi
        let i=i+1
        done
        echo "$line$sum"
        done < "${1:-/dev/stdin}"


        If the above script is called process and your data file is called data, running



        process < data


        will produce



        123|Raghu|230
        234|Maya|60
        123|Atul|110
        413|Gita|216
        745|Mohan|145






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Feb 7 at 2:37









        Robert LongsonRobert Longson

        271411




        271411






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Ask Ubuntu!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1112998%2fhow-to-sum-specific-rows-using-awk-and-other-methods%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Human spaceflight

            Can not write log (Is /dev/pts mounted?) - openpty in Ubuntu-on-Windows?

            File:DeusFollowingSea.jpg