python:从awk命令中删除尾随0和小数点

时间:2015-11-04 04:46:13

标签: python bash awk

我需要从导出中删除尾随零:

代码正在读取原始tempFile我需要第2列和第6列,其中包含:

12|9781624311390|1|1|0|0.0000
13|9781406273687|1|1|0|99.0000
14|9781406273717|1|1|0|104.0000
15|9781406273700|1|1|0|63.0000

awk命令将表单更改为逗号分隔并将第2列和第6列转储到tempFile2中 - 我需要从第6列中删除尾随零,因此最终结果如下所示:

9781624311390,0
9781406273687,99
9781406273717,104
9781406273700,63

我相信这应该可以解决问题,但实施它并没有运气:

awk '{sub("\\.*0+$",""); print}'

以下是我需要调整的代码:$ 6是删除零的列

if not isError:
    print "Translating SQL output to tab delimited format"
    awkRunSuccess = os.system(
            "awk -F\"|\" '{print  $2 \"\\,\" $6}' %s > %s" %
            (tempFile, tempFile2)
    )
    if awkRunSuccess != 0: isError = True

2 个答案:

答案 0 :(得分:0)

您可以使用gsub("\\.*0+$","",$2)执行此操作,具体如下:

pax> echo '9781624311390|0.0000
9781406273687|99.0000
9781406273717|104.0000
9781406273700|63.0000' | awk -F'|' '{gsub("\\.*0+$","",$2);print $1","$2}'

9781624311390,0
9781406273687,99
9781406273717,104
9781406273700,63

但是,鉴于你已经 Python中(并且它对于正则表达式来说并不吝啬),你可能想要原生使用它而不是启动awk过程

答案 1 :(得分:0)

试试这个awk命令

awk -F '[|.]'  '{print $2","$(NF-1)}' FileName

<强>输出:

9781624311390,0
9781406273687,99
9781406273717,104
9781406273700,63