2017-03-22 1 views
1

난 복잡한 트랜잭션 CSV가 있습니다. 문자열 "Transaktion"이 포함 된 특정 행/필드에서 시작하는 데이터를 추출해야하고 또한 각 CSV의 마지막 행을 건너 뜁니다.awk - 조건 정규식/문자열로 라인을 찾고 마지막 라인을 삭제하십시오.

AWK가 시작 라인을 찾고 처리 할 수있게 할 수 있습니다. 괜찮지 만 마지막 줄을 건너 뛰는 방법을 추가 할 수는 없습니다.

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

예를 들어 데이터와 예상 출력을 게시하시기 바랍니다. –

답변

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; 
} 
+0

mh가 오타가 될 수 있지만 구문 오류가 있습니다. – prestalearner

+0

업데이트 된 스크립트가 실행되었고 작동했습니다! 화려하고 많은 감사합니다! OFS = FS = ";"를 추가해야했습니다. 내 입력에 대한 모든 지금은 괜찮아요. – prestalearner

관련 문제