我有一个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
我希望以最简单,最快捷的方式完成上述工作。我对所有工具持开放态度。
谢谢
答案 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