진정한 AWK에 대한 중 하나가 아닌 비어있는 문자열 (숫자 진수 정수 또는 부동 소수점 일부 AWK 구현 16 진수 또는 진수가 아니라 지원과) 또는 비 - 제로 번호입니다. 큰 따옴표로 묶인 것은 문자열이고 따옴표가없는 리터럴 숫자는 숫자이지만, 무엇이든 문자열이나 숫자로 취급할지 여부를 결정하는 복잡한 규칙이 있습니다. GNU awk
매뉴얼은 그것에 관한 모든 장을 가지고 있습니다.
진실:
awk '1'
(0이 아닌 숫자)
awk '1e8'
(0이 아닌 숫자)
awk '-0.01'
(0이 아닌 숫자)
awk '"foo"'
(빈 문자열이 아님)
awk '"0"'
(빈 문자열이 아님)
awk '0 ""'
(연결은 여기에 비어 있지 않은 문자열을 생성합니다)
echo 0 | awk '$1 ""'
($ n 필드와 동일)
awk 'substr("000", 1, 1)'
(결과 substr()
는 항상 문자열입니다)
echo '0foo' | awk '$0'
($ 0은 숫자가 아닌 문자열이므로 문자열로 간주됩니다 (비어 있지 않음))
그릇된:
awk '0'
(0 번호)
awk '""'
(빈 문자열)
echo 0000e123 | awk '$1'
($ 1은 여기 있고 0 인 숫자 문자열 인 경우 숫자로 간주됩니다)
echo ' 0 ' | awk '$0'
문자열이 숫자인지 확인하기 위해 선행 및 후행 공백은 무시됩니다.
awk '" 2foo" - 2'
(산술 표현식에 관련된 문자열은 무시 된 숫자 이상의 것을 가진 숫자로 변환됩니다)
awk 'unset_or_empty_variable'
(빈 문자열)
awk '"non-numerical-string" + 0'
YMMV :
awk '1e-500'
(일부는 불평하고 일부는 0으로 취급합니다)
awk '"0x1" + 0'
(모든 AWK 구현 않는 사람들에, 헥사을 지원하기 "0x1"
로 변환됩니다 1
다른 사람에, 0
거기 16 진수를 지원하기 위해 실수로 필요한 구현.는 POSIX 사양의 일부 버전을하고 나중에 후퇴입니다. 아직 gawk
때 16 진수를 인식하지 POSIXLY_CORRECT
에 환경)
awk '010 - 8'
(8 진수에 대해서는 (여기서 010이 문자열에서 변환되는 것과는 달리 문자 그대로 임)와 동일하지 않음)
awk '0x1 - 1'
(에 awk
진수 번호를 지원하지 않는 구현 0x1
의 연결 한 0
과 x1
수율 변수 "0"
숫자 (0)으로 변환됩니다, 당신은 빼기 경우 1
당신이 얻을 -1
아닌 숫자입니다).
즉, 문자열이 비어 있지 않은지 확인하려면 다음을 수행하지 않아야합니다.
awk '$ 1 {print $ 1, "비어 있지 않습니다"}'
그러나
awk '$1 != "" {print $1, "is not empty"}'
그렇지 않으면 말하지 0
않거나 -0000E+00001234
비어 있지 않습니다 .
any_integer
난 당신 같은 평균 문자 수를 가정7, 89
등 그렇다면를 이유가 아닌 다른 번호입니다0
수단의true
조건