![gawk를 사용하여 CSV 파일에 조건부로 새 헤더를 도입하는 방법](https://linux55.com/image/179117/gawk%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20CSV%20%ED%8C%8C%EC%9D%BC%EC%97%90%20%EC%A1%B0%EA%B1%B4%EB%B6%80%EB%A1%9C%20%EC%83%88%20%ED%97%A4%EB%8D%94%EB%A5%BC%20%EB%8F%84%EC%9E%85%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
csv 파일이 있는데 열 번호만 추출하고 싶습니다.7그리고11. 열 7(해당 열에 값이 있음)의 값에 따라 OK
또는 그 옆에 열( 맵 위치 KO
라고 함)을 삽입하고 싶습니다 .value
OK -> 0
KO -> 1
또한 시작 부분에 간단한 문자열 열을 추가했습니다.
내 .awk
파일은 다음과 같습니다.
BEGIN {FS=";";OFS=","}
{
value=0
if($7=="KO") {
value=1
}
print "Measure_QS",$7,value,$11
}
이 파일을 사용하십시오:
gawk -f converter.awk Dataset.csv | head -n 10
다음 콘텐츠를 제공하세요.
Measure_QS,result,0,time_stamp
Measure_QS,OK,0,2020-01-17 11:53:33.000
Measure_QS,OK,0,2020-01-17 11:53:22.000
Measure_QS,OK,0,2020-01-17 11:51:42.000
Measure_QS,OK,0,2020-01-17 11:51:30.000
Measure_QS,OK,0,2020-01-17 11:51:06.000
Measure_QS,OK,0,2020-01-17 11:50:53.000
Measure_QS,OK,0,2020-01-17 11:50:41.000
Measure_QS,OK,0,2020-01-17 11:50:29.000
Measure_QS,OK,0,2020-01-17 11:50:17.000
제목은 Measure_QS,result,0,time_stamp
다음과 같습니다.Measure_QS,result,value,time_stamp
내가 어디서 잘못됐나요?
답변1
NR
변수를 사용하여 이 문제를 해결할 수 있었습니다.gawk
BEGIN {FS=";";OFS=",";print "measurement","result","value","time_stamp"}
{
value=0
if(NR!=1) {
if($7=="KO") {
value=1
}
print "Measure_QS",$7,value,$11
}
}
이것은 잘 작동합니다
gawk -f converter.awk Dataset.csv | head -n 10
measurement,result,value,time_stamp
Measure_QS,OK,0,2020-01-17 11:53:33.000
Measure_QS,OK,0,2020-01-17 11:53:22.000
Measure_QS,OK,0,2020-01-17 11:51:42.000
Measure_QS,OK,0,2020-01-17 11:51:30.000
Measure_QS,OK,0,2020-01-17 11:51:06.000
Measure_QS,OK,0,2020-01-17 11:50:53.000
Measure_QS,OK,0,2020-01-17 11:50:41.000
Measure_QS,OK,0,2020-01-17 11:50:29.000
Measure_QS,OK,0,2020-01-17 11:50:17.000