Visit Our UNIX and Linux User Community


Concatenate multiple commands


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Concatenate multiple commands
# 1  
Old 04-14-2020
Concatenate multiple commands

hi, i am creating a script that given a file with multiple fields, take the first and return everything on a single output line: file name, number of lines, sum, average and standard deviation ....
I have the commands to calculate them but I don't know which command to use to concatenate them and put everything on the same output line

Code:
#!/bin/bash



if  [ $# -eq 1 ] ;     
        
        then 
              
filename="/home/marco/$1"
base=`basename "$filename"`
noext=${base%.*}

echo -n " $noext  " ;
wc -l $1 | awk '{print $1}' ;  
awk '{SUM+=$1}END{print SUM}' $1 
awk '{sum+=$1} END {print sum/NR}' $1 
awk  'NR>2 {sum+=$1; array[NR]=$1} END {for(x=1;x<=NR;x++){sumsq+=((array[x]-(sum/NR))^2);}print sqrt(sumsq/NR)}' $1

                   
fi

# 2  
Old 04-14-2020
In general you would use VAR=$( command ) to capture the output of each command and then echo your result at the end like this:

Code:
#!/bin/bash

if [ $# -eq 1 ]
then 
    filename="/home/marco/$1"
    base=`basename "$filename"`
    noext=${base%.*}

    SZ=$(wc -l $1 | awk '{print $1}' )
    AVG=$(awk '{sum+=$1} END {print sum/NR}' $1)
    STD=$(
       awk 'NR>2 {sum+=$1; array[NR]=$1}
           END {for(x=1;x<=NR;x++){sumsq+=((array[x]-(sum/NR))^2);}print sqrt(sumsq/NR)}' $1)

    echo " $noext $SZ $SUM $AVG $STD"
fi

However in this instance one pass thru the file with awk will allow you to capture all the values needed like this:

Code:
if [ $# -eq 1 ]
then 
    awk '
        {SUM+=$1; array[NR]=$1}
        END {
           for(x=1;x<=NR;x++) {
              sumsq+=((array[x]-(SUM/NR))^2)
           }
           noext=FILENAME
           gsub(/\..*$/, "",noext)
           print noext,NR,SUM,SUM/NR,sqrt(sumsq/NR)}' $1
fi

This User Gave Thanks to Chubler_XL For This Post:

Previous Thread | Next Thread
Test Your Knowledge in Computers #623
Difficulty: Medium
The Python for loop is radically different from the C/C++ for loop.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Concatenate column values when header is Matching from multiple files

there can be n number of columns but the number of columns and header name will remain same in all 3 files. Files are tab Delimited. a.txt Name 9/1 9/2 X 1 7 y 2 8 z 3 9 a 4 10 b 5 11 c 6 12 b.xt Name 9/1 9/2 X 13 19 y 14 20 z 15 21 a 16 22 b 17 23 c 18 24 c.txt Name 9/1 9/2... (14 Replies)
Discussion started by: Nina2910
14 Replies

2. Shell Programming and Scripting

How To Concatenate Two Commands in script using heredoc?

Hello, I am trying to place two commands in heredoc below is the snippet if ;then actionOnTux="$actVerb" else actionOnTux="$actVerb" fi echo "Performing ACTION: $action on $tux@$srv .....\n" if ; then ... (5 Replies)
Discussion started by: kataria.anand
5 Replies

3. UNIX for Advanced & Expert Users

Pass Multiple Commands and Open Multiple Xterms via PSS

Hello, I'm attempting to open multiple xterms and run a command as an SAP user via sudo using PSSH. So far, I'm able to run PSSH to a file of servers with no check for keys, open every xterm in to the servers in the file list, and SUDO to the SAP(ADM) user, but it won't do anything else... (11 Replies)
Discussion started by: icemanj
11 Replies

4. Shell Programming and Scripting

Concatenate select lines from multiple files

I have about 6000 files of the following format (three simplified examples shown; actual files have variable numbers of columns, but the same number of lines). I would like to concatenate the ID (*Loc*) and data lines, but not the others, as shown below. The result would be one large file (or... (3 Replies)
Discussion started by: pathunkathunk
3 Replies

5. Shell Programming and Scripting

Grouping multiple columns and concatenate

I have a CSV file that goes like this: Name,Group,Email Max,Group1,max@.com Dan,Group2,dan@.com Max,Group3,max@.com Max,Group4,max@.com Dan,Group5,dan@.com Jim,Group6,jim@.comBasically my desired output should be: Name,Group,Email Max,Group1|Group3|Group4,max@.com... (6 Replies)
Discussion started by: jeffreybsu
6 Replies

6. Shell Programming and Scripting

concatenate multiple file

Hi Need some help to concatenate files I have multiple spool files nearlly 15 of them which I need to concatenate like as shown in the below example for ex. file1.txt aaaa|bbbbb|cccc| dddd|eeee|ffff| kkkkk|uuuuu|gggg| file2.txt xxxx|yyyy|zzzz| 1111||kkkk|lllll... (2 Replies)
Discussion started by: rashmisb
2 Replies

7. Shell Programming and Scripting

Concatenate columns from multiple files

Hi all, I want the 2nd column of every file in the directory in a single file with the file name as column header. $cat file1.txt a b c d e f $cat file2.txt f g h g h j $cat file3.txt a b d f g h (2 Replies)
Discussion started by: newbie83
2 Replies

8. Shell Programming and Scripting

want to concatenate multiple files based on the rest of ls -lrt

uadm@4132> ls -lrt -rw------- 1 uadm uadm 3811819 Jun 6 04:08 data_log-2010.05.30-10:04:08.txt -rw------- 1 uadm uadm 716246 Jun 13 01:38 data_log-2010.06.06-10:04:08.txt -rw------- 1 uadm uadm 996 Jun 13 04:00 data_log-2010.06.06-10:04:22.txt -rw------- 1 uadm uadm 7471 Jun 20 02:03... (5 Replies)
Discussion started by: mail2sant
5 Replies

9. Shell Programming and Scripting

Concatenate multiple lines based.

Hello, I have been searching the forum for concatenation based on condition. I have been close enough but not got th exact one. infile: -----DB_Name ABC (X, Y,Z). DB_Name DEF (T). DB_Name GHI (U ,V,W). Desired Output file should be: ---------------------------DB_Name ABC... (8 Replies)
Discussion started by: indrajit_u
8 Replies

10. Shell Programming and Scripting

Find multiple patterns on multiple lines and concatenate output

I'm trying to parse COBOL code to combine variables into one string. I have two variable names that get literals moved into them and I'd like to use sed, awk, or similar to find these lines and combine the variables into the final component. These variable names are always VAR1 and VAR2. For... (8 Replies)
Discussion started by: wilg0005
8 Replies

Featured Tech Videos