Unix命令从文件中删除尾随零

时间:2013-11-12 08:13:40

标签: unix

我有一个包含

等数字的文件
125.0
3.5
0.0
2.1
9.0
0.0
0.0
0.0

如何删除文件末尾的零?

谢谢!

编辑:预期输出应为

125.0
3.5
0.0
2.1
9.0

3 个答案:

答案 0 :(得分:3)

这是使用GNU sed的一种方式:

sed ':a; N; $!ba; s/\(\n0.0\)*$//' file.txt

如果您有许多文件并希望进行就地编辑:

sed -i ':a; N; $!ba; s/\(\n0.0\)*$//' *.txt

结果:

125.0
3.5
0.0
2.1
9.0

答案 1 :(得分:1)

如果您安装了vim,请在vim中尝试以下命令:

:%s/\(\n0\.0\)\+\%$//
  • \%$:匹配文件的位置结尾

如果要处理多个文件,请在bash:

中尝试此命令
for file in *.txt
do
    echo ':%s/\(\n0\.0\)\+\%$// | :wq' | vim -e $file
done
  • -e:在ex模式下运行vim

答案 2 :(得分:1)

perl -p0777e's/(?:0.0\n)*$//' file.txt

对于多个文件

perl -i -p0777e's/(?:0.0\n)*$//' *.txt

对于大文件,您可以考虑尝试此版本:

tac file.txt | perl -pe '/^0\.0$/ and do{$_=<>; redo} or $x=1 unless $x' | tac