Транспонировать столбцы в строки с повторением данных первого столбца с помощью awk

Исправленный скрипт должен выглядеть примерно так:

#!/bin/sh 

for hi in $(seq 0 100)
do
    if [ "$(expr $hi % 5)" -eq 5 ]
    then
        echo hello
    elif [ "$(expr $hi % 5)" -eq 6 ]
    then
        echo bye
    elif [ "$(expr $hi % 5)" -eq 7 ]
    then
        echo whats up
    fi
    echo "$hi"
done

Но этот цикл никогда не войдет ни в одно из условий if, поскольку остаток операции по модулю 5 никогда не будет равен 5, 6 или 7.

1
15.02.2020, 04:20
2 ответа

Попробуйте

$ awk -F, '
    BEGIN{OFS=FS} 
    NR==1{n = split($0,a); print "month,variable,value"; next}
    {for(i=2;i<4;i++) print $1,a[i],$i}
' file
month,variable,value
June,var1,10
June,var2,a
Sep,var1,20
Sep,var2,b
Dec,var1,30
Dec,var2,c

(это больше похоже на взрыв, чем на перемещение ).

2
28.04.2021, 23:23
awk -F, '
    BEGIN{OFS=FS} 
    NR==1{n = split($0,a); print "month,variable,value"; next}
    {for(i=2;i<NF;i++) if (a[i] !=""){ print $1,a[i],$i} }
' file
0
28.04.2021, 23:23

Теги

Похожие вопросы