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

如何在Shell脚本中删除文本文件的第一个字符?

当然可以实现!刚接触Shell脚本不用慌,我来一步步给你讲清楚怎么用sed搞定这个需求,还有几个备选方法供你参考~

用sed删除文件的第一个字符

你说得没错,sed确实是处理这类文本操作的利器,除了查找替换,它还能轻松实现行定位和字符删除。针对你的需求,最简洁的写法是:

sed -i '1s/^.//' yourfile.txt

我来拆解一下这个命令:

  • -i:直接修改原文件(如果不想改动原文件,去掉这个参数,把输出重定向到新文件即可:sed '1s/^.//' yourfile.txt > newfile.txt)
  • 1:表示只处理第一行
  • s/^.//:这是sed的替换命令,^.匹配行首的任意一个字符,把它替换成空字符串(也就是删掉这个字符)

如果你觉得上面的写法有点复杂,还可以简化成更直观的版本:

sed -i '1s/.//' yourfile.txt

这里省略了^,因为sed的替换默认是从行首开始匹配第一个符合条件的字符,所以效果和上面完全一样。

其他备选方法

如果你想了解更多实现方式,这里还有两个实用的方案:

用awk处理

awk擅长按行处理文本,写法也很清晰:

awk 'NR==1{print substr($0,2)} NR>1{print}' yourfile.txt > newfile.txt
  • NR==1:判断当前是第一行,用substr($0,2)输出从第二个字符开始的内容
  • NR>1:其他行直接原样输出

用head+tail+cut组合命令

这个方法是把文件拆成两部分处理,再拼接起来:

# 先处理第一行,取从第二个字符开始的内容,再拼接后面所有行
echo "$(head -n1 yourfile.txt | cut -c2-)" "$(tail -n+2 yourfile.txt)" > newfile.txt
  • head -n1:取文件第一行
  • cut -c2-:截取第一行中从第二个字符到结尾的部分
  • tail -n+2:取文件从第二行开始的所有内容
总结

对于你的需求,最推荐用sed的方法,它简洁高效,而且是Shell文本处理的常用工具,学会这个写法对你以后的脚本编写也很有帮助。如果是测试阶段,记得先不用-i参数,确认输出符合预期后再修改原文件哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:20:28