음수를 무시하는 방법

음수를 무시하는 방법

다음 예를 고려해 보겠습니다.

1 4.0 3.5 7.2
2 3.2 2.5 5.2
3 1.7 -1.8 2.9
4 4.1 2.5 5.7

음수를 무시하여 테이블의 세 번째 열을 추출하는 방법은 무엇입니까?

을 사용하면 awk '{print $3}' filename네 개의 숫자가 모두 제공됩니다. 하지만 저는 양수만 취하고 싶습니다. 즉, 최종 출력은 세 개의 숫자여야 합니다.

3.5
2.5
2.5

어떻게 해야 하나요?

답변1

질문에 표시된 대로 입력이 순수 숫자라고 가정합니다.

awk '$3 >= 0 { print $3 }' file

블록 이전의 테스트는 블록이 실행될지 여부를 결정합니다. 이 경우 테스트는 산술 테스트이며 다음과 같습니다.진짜필드 3의 데이터가 음수가 아닌 경우. 이 경우 필드가 출력됩니다.

답변2

세 번째 열은 숫자나 문자열로 처리될 수 있습니다. awk컨텍스트에서 요구하는 경우 문자열에서 숫자로의 암시적 변환이 있으며 숫자가 아닌 값은 0과 같고 숫자가 아닌 접미사는 무시됩니다.

이 솔루션에서는 수치 비교가 없습니다. 문자열이 빼기 기호로 시작하지 않는지 확인 -하고 이 경우에만 출력하십시오.

awk '$3 !~ /^-/ {print $3}' filename

-(이 솔루션은 음수가 아니더라도 로 시작하는 값을 건너뜁니다 . 예를 들어 --00RE를 수정하거나 숫자 비교를 강제하면 이 문제가 해결될 수 있습니다. 숫자 값만 있는 경우에는 이 문제가 발생하지 않습니다.)

답변3

awk '$3 ~/^[0-9]/{print $3}' file.txt 

산출

3.5
2.5
2.5

관련 정보