1

我有一个包含数字的文件

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
4

3 回答 3

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
于 2013-11-12T09:03:03.480 回答
1

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

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

如果要处理多个文件,请在 bash 中尝试以下命令:

for file in *.txt
do
    echo ':%s/\(\n0\.0\)\+\%$// | :wq' | vim -e $file
done
  • -eex: 在模式下运行 vim
于 2013-11-12T08:29:13.993 回答
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
于 2013-11-12T08:41:31.660 回答