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

从文件中删除尾随零的Unix命令,unix,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 如果已安装vim,请在vim中尝试此命令: :%s/\(\n0\.0\)\+\%$// \%%$:匹配文件末尾的位置 如果要处理多个文件,请在bash中尝试以下命令: for file in *.txt do echo ':%s/\(\n0\.0\)\+\%$// | :wq' | vim

我有一个包含如下数字的文件

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

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

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

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

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

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

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

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

for file in *.txt
do
    echo ':%s/\(\n0\.0\)\+\%$// | :wq' | vim -e $file
done
  • -e
    :在
    ex
    模式下运行vim
对于多个文件

perl -i -p0777e's/(?:0.0\n)*$//' *.txt
对于大文件,你可以考虑试用这个版本:

tac file.txt | perl -pe '/^0\.0$/ and do{$_=<>; redo} or $x=1 unless $x' | tac
tac file.txt | perl-pe'/^0\.0$/并执行{$| redo}或$x=1,除非$x'| tac
对于多个文件

perl -i -p0777e's/(?:0.0\n)*$//' *.txt
对于大文件,你可以考虑试用这个版本:

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

这里有一种使用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

这里有一种使用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

在文件中间有<代码> 0代码>代码吗?删除“<代码> 0”/代码>从结尾?@ kev是的,更新帖子以反映这一点。在文件中间有“<代码> 0”/>代码吗?“拖尾”是什么意思?从末尾删除
.0
?@kev Yes,更新帖子以反映这一点。