2015-04-23 51 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

相關問題