1
我刚刚开始使用awk,并且想知道,使用awk时,什么是正确的状态,只有当第一个字段是整数时才会执行某些操作(例如打印出记录)?使用awk,我如何指定只在第一个字段是整数时才执行某些操作?
我刚刚开始使用awk,并且想知道,使用awk时,什么是正确的状态,只有当第一个字段是整数时才会执行某些操作(例如打印出记录)?使用awk,我如何指定只在第一个字段是整数时才执行某些操作?
做些什么...只有当第一个字段是一个整数?
这确实在大括号print
命令,在这种情况下,只有在第一个字段是一个正整数:
awk '$1 ~ /^[[:digit:]]+$/{print;}'
浮点数被拒绝。
如果我们要接受或正或负整数,那么,作为mklement0表明,使用以下命令:
awk '$1 ~ /^[+-]?[[:digit:]]+$/{print;}'
需要注意的是,因为[:digit:]
时,这些测试都是unicode的安全。
很好地完成;更准确地说,它匹配_正整数的十进制整数,任意数量的前导零('awk'将输入中的前缀数字字符串(例如'010','08')视为小数)。如果支持负整数和明确签名的正整数也是需要的:'/^[+ - ]?[[:digit:]] + $ /'。 – mklement0
@ mklement0 wrt'awk在输入中对待前缀为0的数字字符串 - 例如010,08 - 也作为小数字,您应该添加'默认值'。如果用'--non-decimal-data'调用,gawk会将以零开始并且不包含数字大于7的数字视为八进制。 –
@EdMorton:好的小费,谢谢;而我们在这里:'gawk'在另一方面也不同:默认情况下,_does_识别八进制和十六进制。编号_literals在script_内 - 除非指定'--posix'。 – mklement0