Regex 在多列文件中-删除所有尾随的0';Bash中十进制数的s

Regex 在多列文件中-删除所有尾随的0';Bash中十进制数的s,regex,sed,Regex,Sed,下面的样本数据有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

下面的样本数据有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
在这里:

  • s/(\.[0-9]*[1-9])0+(\\\|$)/\1\2 |/g
    :删除点后1个或多个非零数字后的尾随零
  • s/\.\0+(\\|$)/\1/g
    :删除点后面的所有尾随零

如果在文件中找到尾随0的值(如29.760000或13.110000),则应将尾随0从文件中删除到29.76和13.11,并且可以位于“|”中的任何列中删除的文件应
1380.00000
变为
1380
1380\。
?1380.00000应变为1380请将该示例输入的所需输出(无说明)添加到问题中(无注释)。anubhava-命令集不适用于特定的数据集,你能不能请你检查一下这项外汇?你能请你能请你检查一下这项外汇?你能请你能请你能请你检查一下这项外汇吗吗?你能请你能请你能请你能请你能请你能请你能请你检查一下这项外汇吗吗?你能请你能请你能请你能请你能请你能请你能请你能请你能请你能请你检查一下这项外汇外汇?你你你能请你能请你能请你能请你能请你能请你能请你能请你能请你能请你能请你能请你能请你能请你能请你能请你能请你能请你能请你能请你能请你能请你能请你能请你能请你能请你能请你能请你能请你检查一下这这项外汇外汇吗吗吗吗吗吗吗吗吗吗吗吗吗吗吗吗吗吗吗吗吗吗吗吗吗吗吗吗吗吗吗吗吗?137.340000在上述数据集中,数据保持原样,你能解释为什么和不转换吗?看起来,如果在最后一列中遇到整数,它不会考虑它,并且尾随的0不会从最后一列中删除
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||||||