Сделать CSV пустыми запятыми в "dittos" элементов предыдущей строки - PullRequest
0 голосов
/ 26 октября 2018

У меня есть файл, где первая строка является заголовком файла, а соответствующие значения присутствуют в последующих строках. Я хочу заменить 3-ю строку запятыми значениями 2-й строки. Таким образом, моя 3-я строка будет содержать значения 2-й строки плюс существующие значения 3-й строки. И этот процесс продолжается до тех пор, пока я снова не получу строку с аналогичными значениями шаблона, и ее следует скопировать в последующие строки для получения результата, подобного 3-й строке.

Язык программирования: сценарии оболочки Unix

Например. 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 голосов
/ 27 октября 2018

Я создал скрипт 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

Надеюсьэто помогает.

...