Код awk может быть весь в одной строке, если вы используете точки с запятой между командами внутри действий.

сходные входные файлы - это список транзакций бронирования. Меня интересуют строки, которые находятся в двух разделах: а) транзакции и б) возврат средств. Они всегда в нижней части CSV и структурированы.

Я могу пропустить все строки выше раздела транзакции через условие регулярного выражения / транзакция / {печать}.

Я хотел бы добавить столбец со строками "транзакция или возврат" в зависимости от раздела в CSV. Итак, я знаю, является ли клоун транзакцией или возмещением. что-то вроде

IF ($2 = "transaction" || " "  != "refunds"){$7=="transaction"};
IF ($2 = "refunds" || " "  != "transaction"){$7=="refunds"}

Я делюсь CSV и script.awk на моем gdrive и надеюсь, что это приемлемо:структурированный список транзакций

transaction date        via        Details     payment    fee         
             28-02-2015 invoice    txn1        44.1       0.19       
             28-02-2015 invoice    txn2        27.7       0.19       
             07-03-2015 invoice    txn3        43.1       0.19       
             09-03-2015 invoice    txn4        36.8       0.19       
             12-03-2015 invoice    txn5        26         0.19       
             13-03-2015 invoice    txn6        43.7       0.19       
             13-03-2015 invoice    txn7        25.6       0.19       
             15-03-2015 creditcard txn8        70.8       0.19       
                                  Sum         317.8       1.52       
refunds    Datum        via        Details     payment    1.52         
             18-12-2014 invoice    txn0          16           
                                  Sum            16

Мой предполагаемый результат таков:

 date        via        Details        payment    fee     type 
 28-02-2015 invoice    txn1            44.1       0.19     transaction
 28-02-2015 invoice    txn2            27.7       0.19     transaction       
 07-03-2015 invoice    txn3            43.1       0.19     transaction       
 09-03-2015 invoice    txn4            36.8       0.19     transaction       
 12-03-2015 invoice    txn5            26       0.19       transaction       
 13-03-2015 invoice    txn6            43.7       0.19     transaction       
 13-03-2015 invoice    txn7            25.6       0.19     transaction       
 15-03-2015 creditcard txn8            70.8       0.19     transaction       

 18-12-2014 invoice    txn0            16                  refund         

Мой фрагмент на данный момент:

BEGIN {OFS=FS=";"
print {date,payment option,detailspayment,fee,type }

/^transactions/,/^$/{
if ($3=="via) {next};
if ($6=="Sum") {next}; 
print $2 FS $3 FS $4 FS $5 FS $6 FS $7; 
}

Ответы на вопрос(1)

Ваш ответ на вопрос