2015-04-23 52 views

回答

4

做些什么...只有当第一个字段是一个整数?

这确实在大括号print命令,在这种情况下,只有在第一个字段是一个正整数:

awk '$1 ~ /^[[:digit:]]+$/{print;}' 

浮点数被拒绝。

如果我们要接受或正或负整数,那么,作为mklement0表明,使用以下命令:

awk '$1 ~ /^[+-]?[[:digit:]]+$/{print;}' 

需要注意的是,因为[:digit:]时,这些测试都是unicode的安全。

+2

很好地完成;更准确地说,它匹配_正整数的十进制整数,任意数量的前导零('awk'将输入中的前缀数字字符串(例如'010','08')视为小数)。如果支持负整数和明确签名的正整数也是需要的:'/^[+ - ]?[[:digit:]] + $ /'。 – mklement0

+2

@ mklement0 wrt'awk在输入中对待前缀为0的数字字符串 - 例如010,08 - 也作为小数字,您应该添加'默认值'。如果用'--non-decimal-data'调用,gawk会将以零开始并且不包含数字大于7的数字视为八进制。 –

+0

@EdMorton:好的小费,谢谢;而我们在这里:'gawk'在另一方面也不同:默认情况下,_does_识别八进制和十六进制。编号_literals在script_内 - 除非指定'--posix'。 – mklement0

相关问题