You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效在文件最后一行末尾添加句号?现有实现求优化

更高效地给文件最后一行末尾添加句号的方法

你的现有实现确实能完成需求,但它需要创建多个临时文件,涉及多次文件IO操作,对于大文件来说效率会偏低。其实我们可以用单条命令直接完成这个任务,不需要额外的临时文件,更简洁高效。

方法一:使用sed(最简洁)

直接用sed定位到最后一行并在末尾添加句号:

sed '$s/$/./' input_file > output_file
  • 解释:$表示匹配文件的最后一行,s/$/./是将该行的行尾($)替换为句号(本质就是在末尾添加句号),最后将结果重定向到输出文件。

如果想要原地修改原文件(记得先备份),可以使用-i参数(不同系统的sed略有差异):

# GNU sed(Linux),直接原地修改,无备份
sed -i '$s/$/./' input_file

# BSD sed(macOS等),会生成input_file.bak备份文件
sed -i.bak '$s/$/./' input_file

方法二:使用awk

awk也可以高效完成这个任务,只需要遍历一次文件:

awk '{if (NR>1) print prev; prev=$0} END{print prev "."}' input_file > output_file
  • 解释:遍历文件时,先打印上一行的内容(避免重复打印最后一行),最后在END块中给最后一行添加句号并打印。这种方法只需要一次文件读取,效率很高。

对比现有实现

你的原有命令:

sed '$d' file > tmp1
tail -1 file > tmp2
sed -i 's/$/./' tmp2
cat tmp1 tmp2 > output

需要创建两个临时文件,并且多次读取源文件(sed '$d'和tail -1各读一次),对于小文件差异不大,但处理大文件时,单命令的方案能减少IO开销,速度更快。

内容的提问来源于stack exchange,提问作者OXXO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:54:24