Транспонировать несколько столбцов из CSV-файла на основе нескольких столбцов с помощью awk

Пробовал с питоном ниже и работал нормально

#!/usr/bin/python
import re
k=open('l.txt','r')
for i in k:
    print re.sub("/$","",i).strip()
0
15.07.2020, 12:15
1 ответ
$ cat tst.awk
BEGIN { FS=OFS="," }
NR==1 {
    for (numHdrs=1; numHdrs<=NF; numHdrs++) {
        if ( $numHdrs != "" ) {
            break
        }
    }
    numHdrs--
    next
}
{
    hdr = ""
    for (i=1; i<=numHdrs; i++) {
        hdr = hdr $i OFS
    }
}
NR == 2 {
    for (i=numHdrs+1; i<=NF; i++) {
        country[i] = $i
    }
    print hdr "match flag", "country"
    next
}
{
    for (i=numHdrs+1; i<=NF; i++) {
        print hdr country[i], $i
    }
}

.

$ awk -f tst.awk file.csv
num,nom,date reg,match flag,country
0001,AA,2020-05-15,match flag_fr,reg1_fr
0001,AA,2020-05-15,match flag_ch,reg2_ch
0002,AAA,2020-05-20,match flag_fr,
0002,AAA,2020-05-20,match flag_ch,reg3_ch
0
18.03.2021, 23:19

Теги

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