从文件中的第二列中删除0.0

时间:2016-09-22 06:40:11

标签: python regex awk sed

我有一个log.txt文件,其格式如下所示。

的log.txt

280,249.999441
140,0.0
140,0.0
84917,182.59465
140,0.0
72161,185.615882
304,249.998589
280,240.184619

我想删除第二列中包含0.0的所有条目。

预期输出:

280,249.999441
84917,182.59465
72161,185.615882
304,249.998589
280,240.184619

我希望以最简单,最快捷的方式完成上述工作。我对所有工具持开放态度。

谢谢

5 个答案:

答案 0 :(得分:2)

您可以使用awk:

awk -F, '$2 != "0.0"' log.txt

280,249.999441
84917,182.59465
72161,185.615882
304,249.998589
280,240.184619

-F,将输入字段分隔符设置为逗号,$2 != "0.0"检查第二列是否为0.0

答案 1 :(得分:1)

这可能适合你(GNU sed):

sed '/^[^,]*,0\.0$/d' file

答案 2 :(得分:0)

命令行解决方案:

grep -v '0\.0$' log.txt

答案 3 :(得分:0)

fileinput模块将有助于就地重新编写文件。

import sys
import fileinput

for i, line in enumerate(fileinput.input('xyz.txt', inplace=1)):
    if '0.0' in line:
        sys.stdout.write(line.replace(line, ''))
    else:
        sys.stdout.write(line)

xyz.txt的内容:

280,249.999441
84917,182.59465
72161,185.615882
304,249.998589
280,240.184619

答案 4 :(得分:0)

perl

$ perl -F, -lane 'print if $F[1] ne "0.0"' log.txt 
280,249.999441
84917,182.59465
72161,185.615882
304,249.998589
280,240.184619
  • -F,,上拆分输入行并保存到@F数组
  • 然后打印第二个元素与字符串0.0
  • 不匹配的行