[英]awk to print more than 2 decimal values with trailing zero
下面是我的輸入文件,
input.txt
17.0
17.12
17.123
17.1234
17.120
17.1230
17.12340
17.00
17.000
17.0000
而且我希望輸出如下
output.txt
17.120
17.1230
17.12340
17.000
17.0000
即我需要帶有大於2的小數點后跟零的值。 我已經使用了以下awk
但輸出文件也包含17.00。 如何忽略這一點。
awk '/^[0-9]+[.][0-9][1-9]*0/' input.txt
輸出awk
17.120
17.1230
17.12340
17.00
17.000
17.0000
我不確定您為什么要使用awk
, grep
。 另外,如果您知道輸入僅包含與點前面的任何內容匹配的有效數字,則完全沒有必要。
$ grep '[.]...*0$' input.txt
17.120
17.1230
17.12340
17.000
17.0000
$ grep -P '[.][0-9]{2,}0$' input.txt
17.120
17.1230
17.12340
17.000
17.0000
要修復您的模式,只需再添加一個[0-9]
類; 匹配“至少兩個”表示完全匹配兩個( [0-9][0-9]
)加零個或多個[0-9]*
):
$ awk '/[.][0-9][0-9][0-9]*0$/' input.txt
17.120
17.1230
17.12340
17.000
17.0000
或使用+
:
$ awk '/[.][0-9][0-9]+0$/' input.txt
17.120
17.1230
17.12340
17.000
17.0000
通過sed
$ sed -n '/^[0-9][0-9]\.[0-9][0-9]\+0$/p' file
17.120
17.1230
17.12340
17.000
17.0000
通過awk,
$ awk '/^[0-9][0-9]\.[0-9][0-9]+0$/' file
17.120
17.1230
17.12340
17.000
17.0000
計算.
之后的字段數.
:
$ awk -F. '/0$/ && (split($2,a,"")>2)' file
17.120
17.1230
17.12340
17.000
17.0000
0
結尾。 split()
點后的位數。 如果大於2,則檢查為True。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.