Код 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;
}