簡體   English   中英

awk以尾隨零打印兩個以上的十進制值

[英]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

我不確定您為什么要使用awkgrep 另外,如果您知道輸入僅包含與點前面的任何內容匹配的有效數字,則完全沒有必要。

$ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM