将 CSV 空逗号设为上一行项目的 "dittos"

Make CSV empty commas into "dittos" of previous line's items

我有一个文件,其中第一行是文件的 header,相应的值出现在后续行中。我想用第二行的值替换第三行逗号。所以我的第 3 行将包含第 2 行的值加上第 3 行的现有值。这个过程一直持续到我再次得到一行具有相似模式值的行,它应该被复制到后续行以产生类似第 3 行的结果。

编程语言:Unix shell 脚本

例如 sale.txt

Name,flavour,country,sale,POC
Magnum,chocolate,UK
,,,100,Alex
,,,200,Aman
,,,50,Perish
Cornetto,vanilla,US
,,,30,Robert
,,,60,Mary
.
.
.

输出应该是:

Name,flavour,country,sale,POC
Magnum,chocolate,UK,100,Alex
Magnum,chocolate,UK,200,Aman
Magnum,chocolate,UK,50,Perish
Cornetto,vanilla,US,30,Robert
Cornetto,vanilla,US,60,Mary
.
.
.

我为此创建了一个 awk 脚本:

ans.sh

#!/usr/bin/awk -f

BEGIN   { OFS = FS = "," }

NR > 1 {
    if ( == "")  = Name
    if ( == "")  = flavour
    if ( == "")  = country

    Name = 
    flavour = 
    country = 
       }

{ print }

然后我 运行 这个脚本在你的文件上:

mayankp@mayank:~/Documents$ awk -f ans.sh sale.txt 
Name,flavour,country,sale,POC
Magnum,chocolate,UK
Magnum,chocolate,UK,100,Alex
Magnum,chocolate,UK,200,Aman
Magnum,chocolate,UK,50,Perish
Cornetto,vanilla,US
Cornetto,vanilla,US,30,Robert
Cornetto,vanilla,US,60,Mary

希望对您有所帮助。