나는 awk에서 이와 동등한 작업을 수행하고 싶습니다(명령줄에서 각 줄에 대해).
items = split(',')
if items[2] >= 10:
return items[0], items[1], 7
if 4 < items[2] < 10:
return items[0], items[1], 2
return items[0], items[1], 1
파일은 csv 형식이며 3개의 필드가 있습니다.
답변1
다음 텍스트를 xxx.awk와 같이 저장합니다.
#!/usr/bin/awk -f
BEGIN {
FS="," ;
}{
if ( $3 >= 10 ) {
print $1" "$2" "7 ;
} else if ( 4 < $3 && $3 < 10 ) {
print $1" "$2" "2 ;
} else {
print $1" "$2" "1 ;
}
}
그런 다음 실행하십시오.
./xxx.awk yourCSVfile
실행하기 전에 "chmod +x xxx.awk" 명령줄을 실행해야 합니다.
답변2
- 분할 구문은 다음과 같습니다(배열의 문자열 분할
split(i,items,",")
, 구분)i
items
,
- 인덱스는 1부터 시작합니다.
a < b < c
awk는 구성을 지원하지 않습니다- 연결은 다음을 통해 이루어집니다.
a b
당신은 단지 원한다
split(i,items,",")
if (items[3] >= 10)
return items[1] items[2] 7 ;
if (4 < items[3] ) ## if item[2]>=10, code isn't reached
return items[1] items[2] 2 ;
return items[1] items[2] 1
제공 (입력 문자열 => 결과)
11,11,11 => 11117
5,5,5 => 552
1,1,1 => 111