Добавить новый столбец на основе значения существующего столбца - PullRequest
0 голосов
/ 11 мая 2019

Я пытаюсь преобразовать файл с разделителями в таблицу данных в Linux. Значение значения в определенных столбцах зависит от значения в отдельном столбце. Как я могу создать дополнительные столбцы на основе значения столбца?

В зависимости от значения столбца 2, то есть 00 или 01, интерпретация столбцов 3 и 4 различна. Так что, если бы у меня были следующие значения.

A1,00,N1,T1
A1,01,N2,T2
A2,00,N3,T3
A2,01,N4,T4

Ожидаемые результаты должны быть следующими. Обратите внимание, как теперь у меня есть два новых столбца.

A1,00,N1,T1,N2,T2
A2,01,N3,T3,N4,T4

1 Ответ

1 голос
/ 11 мая 2019
$ awk -F, '                                #1
      {A[$1] = A[$1] FS $3 FS $4}          #2
  END {for(i in A) print i FS "00" A[i]}   #3
' file
A1,00,N1,T1,N2,T2
A2,00,N3,T3,N4,T4
  1. Установите разделитель полей на запятую.
  2. В каждой строке установите Array[first-column] на свое текущее значение, за которым следуют третий и четвертый столбцы.
  3. В концедля каждого индекса выведите имя индекса, запятую, строку «00» и значение этого индекса.

Конечное значение A[A1] равно ,N1,T1,N2,T2

...