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

Linux下如何移除.dat文件每行末尾的竖线(|)

移除.dat文件每行末尾竖线的实用方法

嘿,我来帮你搞定这个问题!先看看你的场景:你有个.dat文件,内容大概是这样的:

1|sam |test|
2|eric |test|
3|james|test|

你之前尝试了sed 's/.$//' file > file.nolast这个命令,其实思路是对的,但可以更精准,避免误删其他字符。下面给你几个靠谱的解决方案:

1. 精准匹配行尾竖线(最推荐)

这个命令专门瞄准每行末尾的|进行删除,不会碰其他字符:

sed 's/|$//' yourfile.dat > yourfile.nolast.dat

为啥这个更好?解释下:

  • s/|$//里的$是行尾锚点,意思是只匹配行最后一位的竖线,把它替换成空(也就是删掉)。
  • 对比你之前的.$,它是删除每行最后一个字符,万一某行末尾不是竖线(比如有换行符或者其他意外字符),就会误删,这个方法就不会有这个问题。

2. 处理带末尾空格的情况

如果你的文件里有些行末尾是「空格+竖线」(比如1|sam |test |),可以用这个命令一次性干掉空格和竖线:

sed 's/ *|$//' yourfile.dat > yourfile.nolast.dat

这里的 *表示匹配0个或多个空格,再配合行尾的竖线,一次性清理干净。

3. 直接原地修改原文件

要是你不想生成新文件,想直接修改原文件,可以用sed的-i参数(注意不同系统用法略有区别):

  • Linux系统直接用:
sed -i 's/|$//' yourfile.dat
  • macOS系统需要加个空字符串参数:
sed -i '' 's/|$//' yourfile.dat

⚠️ 小提醒:原地修改前最好先备份原文件,以防操作失误丢数据!

其实你之前的命令如果每行最后确实都是|的话也能生效,但精准匹配行尾竖线的方式更稳妥,适配更多可能的情况~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:33:04