awk - 条件通过正则表达式/字符串查找行并删除最后一行

时间:2017-03-22 17:41:26

标签: regex awk find conditional-statements skip

我收到了一个令人费解的交易csv。我需要提取从包含字符串的特定行/字段开始的数据" Transaktion"并且还跳过(每个)csv的最后一行。

我可以让AWK找到起始线,然后处理以下所有内容。这很好,但我无法添加跳过最后一行的方法。

/^Transaktionen/,/^$/ {
getline; 
print $2 FS $3 FS $4} 

1 个答案:

答案 0 :(得分:0)

您可以使用此awk

awk '/^Transaktionen/{p=1; next} p {
   if (c2 != "") print c2, c3, c4; c2=$2; c3=$3; c4=$4}' file.csv

试试这个awk脚本:

BEGIN {
        #OFS=FS=";" ;
        #print $0;
        print "Datum2;Zahlart3;TXN Kundendetails4 - KundenID5;Beschreibung6;Betrag7;Gebuehr10;Disagio11;Auszahlungsbetrag12";
        #einnahmen = "Transaktionen";
        #erstattung = "Refunds";
}
/^Transaktionen/{p=1; next} p {
   if (c2 != "")
      print c2, c3, c4, c5, c6 , c7 ,c10, c11, c12;
   c2=$2; c3=$3; c4=$4; c5=$5; c6=$6; c7=$7; c10=$10; c11=$11; c12=$12;
}