아, else 조건이 작동하지 않으면

아, else 조건이 작동하지 않으면

다음 명령을 사용하여 추가할 수 있었던 모든 행에 대해 csv 파일의 세 번째 열에 값 0.0을 추가해야 합니다.

awk -v FS=',' -v OFS=',' '{$2=$2",0.0"} 1' test.csv

그런데 행에 세 번째 열이 있는지 확인하면 다음 명령을 사용하여 값을 추가하는 것만으로는 작동하지 않습니다.

awk -F, '{ if (length($2) != 0)  `awk -v FS=',' -v OFS=',' '{$2=$2",0.0"} 1'` ;}' test.csv

테스트.csv

2016-10-25 11:18:42.945 UTC,"dummy",546

2016-10-25 11:18:42.950 UTC

set misc_data = 'La Carmela de Boracay Resort Hotel|Twin 
Deluxe|Breakfast|AC|NA|Triple Sharing|-1_U_Miss_NINIA_HANNAH_FUGUIAO_-1_Non_false_#|'

1,2,5
3

산출:

2016-10-25 11:18:42.945 UTC,"dummy",0.0,546

1,2,0.0,5

답변1

명시적으로 테스트할 필요는 없습니다 if. 논리를 awk에 통합할 수 있습니다.무늬

awk -v FS=',' -v OFS=',' 'NF>1 && length($2) !=0 {$2=$2",0.0"; print}' test.csv
2016-10-25 11:18:42.945 UTC,"dummy",0.0,546
1,2,0.0,5

를 사용하려는 경우 if구문은 if (condition) {expression}다음과 같습니다.

awk -v FS=',' -v OFS=',' 'NF>1 {if (length($2) !=0) {$2=$2",0.0"; print}}' test.csv

관련 정보