gpt4 book ai didi

regex - 在多列文件中 - 从 Bash 中的十进制数中删除所有尾随 0

转载 作者:行者123 更新时间:2023-12-04 09:17:48 25 4
gpt4 key购买 nike

下面的示例数据有 2 条线和管道定界符 -

FD|2020-07-21 05:28:15|+08:00|15953092491000|2020072122001412161425872467|2088411904346062|05|S|2020-07-21 05:28:15|+08:00|2480.000000|CNY|S|在线支付||29.760000|CNY||S|2020-07-21 05:28:15|+08:00|2480.000000|CNY||||||

FD|2020-07-20 15:15:29|+08:00|15952580397320|2020072022001448541422843472|2088411904346062|05|S|2020-07-20 15:15:29|+08:00|1380.000000|CNY|S|在线支付||13.110000|CNY||S|2020-07-20 15:15:29|+08:00|1380.000000|CNY||||||
我试图在下面使用 -
sed -r -e 's/\|/||/g' -e 's/(\|[0-9.]+[1-9])0+\|/\1|/g' -e 's/\|\|/|/g' 
但这也消除了小数点之前的尾随 0,例如
212000 到 212 ,我不想要。
我只想删除小数后的尾随 0 -
例子-
72.650000 至 75.65

最佳答案

你可以用这个sed :

sed -E 's/(\.[0-9]*[1-9])0+(\||$)/\1\2/g; s/\.\0+(\||$)/\1/g' file
FD|2020-07-21 05:28:15|+08:00|15953092491000|2020072122001412161425872467|2088411904346062|05|S|2020-07-21 05:28:15|+08:00|2480|CNY|S|在线支付||29.76|CNY||S|2020-07-21 05:28:15|+08:00|2480|CNY||||||
FD|2020-07-20 15:15:29|+08:00|15952580397320|2020072022001448541422843472|2088411904346062|05|S|2020-07-20 15:15:29|+08:00|1380|CNY|S|在线支付||13.11|CNY||S|2020-07-20 15:15:29|+08:00|1380|CNY||||||
这里:
  • s/(\.[0-9]*[1-9])0+(\||$)/\1\2|/g :删除点
  • 后 1 个或多个非零数字后的尾随零
  • s/\.\0+(\||$)/\1/g : 删除点
  • 后的所有尾随零

    关于regex - 在多列文件中 - 从 Bash 中的十进制数中删除所有尾随 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63151449/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com