将CSV空逗号放入上一行项目的“ dittos”中

时间:2018-10-26 12:13:40

标签: shell unix ksh

我有一个文件,其中第一行是文件的头,随后的行中包含相应的值。我想用第二行的值替换逗号的第三行。因此,我的第三行将包含第二行的值加上第三行的现有值。这个过程一直持续到我再次得到一行具有相似模式值的行,并将其复制到后续行以产生类似第三行的结果。

编程语言: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
.
.
.

1 个答案:

答案 0 :(得分:0)

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

ans.sh

#!/usr/bin/awk -f

BEGIN   { OFS = FS = "," }

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

    Name = $1
    flavour = $2
    country = $3
       }

{ 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

希望这会有所帮助。