я получил некоторые проблемы с этим основные данные:AWK - использование элемента на следующей записи GETLINE?
DP;DG
67;
;10
;14
;14
;18
;18
;22
;65
68;
;0
;9
;25
;25
70;
, что я хотел бы преобразовать на этот вид продукции:
DP;DG
67;
;10
;14
;14
;18
;18
;22
;65;x
68;
;0
;9
;25
;25;x
70;
Значение «х» приходит, если на следующей строке $ 1 существует, или если $ 2 является нулевым. По моему мнению, я должен использовать getline, но я не понимаю! Я попытался следующий код:
#!/bin/bash
file2=tmp.csv
file3=fin.csv
awk 'BEGIN {FS=OFS=";"}
{
print $0;
getline;
if($2="") {print $0";x"}
else {print $0}
}' $file2 > $file3
Показалось легко. Я не упоминаю результат, полностью отличный от моих ожиданий.
Некоторые подсказки? Необходима ли линия для этой проблемы?
ОК, я продолжаю тестировать код:
#!/bin/bash
file2=tmp.csv
file3=fin.csv
awk 'BEGIN {FS=OFS=";"}
{
getline var
if (var ~ /.*;$/) {
print $0";x";
print var;
}
else {
print $0;
print var;
}
}' $file2 > $file3
Это довольно лучше, но все же, все линии, которые должны быть отмечены не ... Я не понимаю, почему ...
«Из моего понимания, я должен использовать getline'. Нет, прочитайте «Эффективное программирование Awk», 4-е издание, Арнольд Роббинс, чтобы узнать, как использовать awk и читать http://awk.freeshell.org/AllAboutGetline, чтобы узнать несколько раз, когда уместно использовать getline и все оговорки и причины, к. –