내 기록 아래에 CSV 파일이 있습니다. awk 조건에 따라 Status Column 값이 30보다 작을 경우 해당 Project(Column1) 값 Orange가 출력되어야 한다.
awk -F'[,]' '{ if ( 30 >= 30 ) {print $2,$9} }' user.csv
전류 출력
Project Status
Apple "Current (days remaining : 83)"
Orange"Current (days remaining : 30)"
예상 출력
Project
Orange
ID,Project,"App System",Version,"Report Date",Status
1,Apple,NAT,0,0,0,0,09/02/2022,"Current (days remaining : 83)"
2,Orange,BAT,0,0,0,0,09/02/2022,"Current (days remaining : 30)"
누구든지 이 문제를 해결하도록 도와주실 수 있나요?
답변1
문제는 자신의 .NET 비교 연산자 -le
대신 셸 비교 연산자를 사용하려고 한다는 것입니다 . 귀하의 텍스트는 요구 사항을 다음과 같이 설명합니다.awk
awk
<=
미만대신에보다 작거나 같음, 그러나 예제 출력에서는 후자를 보여줍니다. 또한 30
필드를 값과 비교하는 대신 실제로 표현식의 양쪽을 모두 얻었습니다 .
마지막으로 숫자 비교를 수행할 수 있도록 쉼표로 구분된 9번째 필드를 여러 부분으로 분할해야 합니다. 콜론( :
)은 이 작업을 위한 편리한 구분 기호입니다.
awk -F, '{ split($9, c, ":"); if (NR==1 || c[2]+0 <= 30) {print $2} }' user.csv
산출
Project
Orange