이것은 내 입력 파일입니다.
PA43171-7,1,3,/vobs/atlas-idc/src/utils/logger/IDCLogger/IDC.cpp,48,12:01:16.086.660, Valid Sensor Reading,Date = 08-19-2014 , Time = 12:01:16 Voltage Sensor=11 , V$ $=11 , Voltage Sensor Value=9.927417 , Min=9.450000 , Max=11.550000
전압 센서 값, 최소값과 최대값을 비교해야 합니다. (최소값은 전압센서값보다 크고, 최대값보다 크다)
입력 파일에 대해 다음 출력이 예상됩니다.
PA43171-7 Date = 08-19-2014 , Time = 12:01:16 Voltage Sensor Value=9.927417 , Min=9.450000 , Max=11.550000
답변1
노력하다
awk -F, '{ printf "%s %s, %s %s %s µs\n",$1,$8,substr($9,1,15),$11,$12,$13 ;}' file
나는 다음을 사용하여 필드 위치를 얻습니다.
awk -F, '{ for (i=1;i<=NF;i++) printf "%2d: %s\n",i,$i;}' a
1: PA43171-7
2: 1
3: 3
4: /vobs/atlas-idc/src/utils/logger/IDCLogger/IDC.cpp
5: 48
6: 12:01:16.086.660
7: Valid Sensor Reading
8: Date = 08-19-2014
9: Time = 12:01:16 Voltage Sensor=11
10: V$ $=11
11: Voltage Sensor Value=9.927417
12: Min=9.450000
13: Max=11.550000
편집: (중복된 질문이 있습니다. 여기에는 흰색이 없습니다 =
.)
1-필드 인덱스 가져오기
(첫 번째 행만 보면 모든 행이 비슷해 보이는 것 같아요)
awk 'BEGIN { FS="[,=]" } NR == 1 { for (i=1;i<=NF;i++) printf "%2d: %s\n",i,$i;}' a
1: PA43171-7
2: 1
3: 3
4: /vobs/atlas-idc/src/utils/logger/IDCLogger/IDC.cpp
5: 48
6: 12:01:16.086.660
7: Valid Sensor Reading
8: Date
9: 08-19-2014
10: Time
11: 12:01:16 Voltage Sensor
12: 11
13: V$ $
14: 11
15: Voltage Sensor Value
16: 9.927417
17: Min
18: 9.450000
19: Max
20: 11.550000
2- 실제 테스트(기준:<(보다 큼 기호)를 사용하여 문자열을 비교하는 방법기록을 위해)
awk 'BEGIN { FS="[,=]" }
$16 < $18 { print "too low:%s\n",$0 }
$16 > $20 { print "too high:%s\n",$0 } ' a