Monday, June 6, 2022

[SOLVED] Concatenate output of two commands into one line

Issue

I have a very basic shell script here:

for file in Alt_moabit Book_arrival Door_flowers Leaving_laptop
do
    for qp in 10 12 15 19 22 25 32 39 45 60
    do
        for i in 0 1
        do
            echo "$file\t$qp\t$i" >> psnr.txt
            ./command > $file-$qp-psnr.txt 2>> psnr.txt
        done
    done
done

command calculates some PSNR values and writes a detailed summary to a file for each combination of file, qp and i. That's fine.

The 2>> outputs one line of information that I really need. But when executed, I get:

Alt_moabit  10  0
total   47,8221 50,6329 50,1031
Alt_moabit  10  1
total   47,8408 49,9973 49,8197
Alt_moabit  12  0
total   47,0665 50,1457 49,6755
Alt_moabit  12  1
total   47,1193 49,4284 49,3476

What I want, however, is this:

Alt_moabit  10  0    total  47,8221 50,6329 50,1031
Alt_moabit  10  1    total  47,8408 49,9973 49,8197
Alt_moabit  12  0    total  47,0665 50,1457 49,6755
Alt_moabit  12  1    total  47,1193 49,4284 49,3476

How can I achieve that?

(Please feel free to change the title if you think there's a more appropriate one)


Solution

The (GNU version of) echo utility has a -n option to omit the trailing newline. Use that on your first echo. You'll probably have to put some space after the first line or before the second for readability.



Answered By - drysdam
Answer Checked By - David Goodson (WPSolving Volunteer)