이 질문과 관련됨... 특정 열의 숫자 범위를 포함하는 행을 반환합니다. 특정 열의 숫자 범위를 포함하는 행 반환
특정 범위 내의 숫자가 포함된 행을 삭제하는 방법을 알고 있습니다. 그렇다면 다른 열에 숫자가 포함된 경우에만 행을 삭제하려면 어떻게 해야 할까요?
예를 들어 두 번째 열에 4가 포함되고 세 번째 열에 50에서 85 사이의 숫자가 포함된 경우 행을 삭제하시겠습니까? 입력하다
a 3 44 563
d 4 55 11
e 2 93 445
r 4 82 44
e 4 93 33
산출
a 3 44 563
e 2 93 445
e 4 93 33
나는 우리가 이런 일을 할 수 있다고 생각했지만... 작동하지 않습니다.
awk '$2==4' & awk '$2 > 85 && $2 < 50' input > output
누구든지 이것을 알 수 있습니까? 두 번째 열에는 1에서 22 사이의 정수만 포함된다는 점은 주목할 가치가 있습니다.
미리 감사드립니다!
답변1
이 awk 조건은 다음 줄을 인쇄합니다.
awk '$2 != 4 || $3 > 85 || $3 < 50' input
두 번째 열이 4와 같지 않거나, 세 번째 열이 85보다 크거나, 세 번째 열이 50보다 작을 때 한 줄을 인쇄합니다.
이 논리적 동등물은 동일한 효과를 가져야 합니다.
awk '! ($2 == 4 && $3 <= 85 && $3 >= 50)' input
의견에서 지적했듯이 범위 비교를 작성하는 더 깔끔한 방법은 min <= num <= max
다음과 같습니다 min <= num && num <= max
.
awk '! ($2 == 4 && 50 <= $3 && $3 <= 85)' input
awk '$2 != 4 || $3 < 50 || 85 < $3' input