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

如何在空文件或非空文件开头插入指定内容且无覆盖问题?

问题根因

你之前的方案存在两个核心缺陷:

  1. 1s/^/插入内容/ 逻辑是对已存在的第一行做行首替换,空文件不存在任何行,因此命令不会执行,插入失效
  2. 每次执行echo > file都会强制清空文件原有内容,因此后执行的sed操作必然覆盖之前的插入结果

可用解决方案

方案1:文件拼接法(全平台兼容,推荐)

该方案不依赖sed版本,所有Unix/Linux/macOS环境都可正常运行,无论文件是否为空都生效:
把需要插入到开头的内容先输出,再拼接原文件内容,最后覆盖回原文件即可:

# 一次性插入两行内容到开头,原内容自动后移
{ printf '##phasing=none\n#INFO\tFORMAT\tunknown\n'; cat file; } > file.tmp && mv file.tmp file

如果需要分次插入不同内容,每次插入都按这个逻辑执行即可,不会覆盖已有内容:

# 第一次插入第一行内容
{ echo '##phasing=none'; cat file; } > file.tmp && mv file.tmp file

# 第二次插入第二行内容到最开头
{ echo '#INFO	FORMAT	unknown'; cat file; } > file.tmp && mv file.tmp file

方案2:GNU sed原生插入(仅Linux环境可用)

如果你使用的是Linux默认带的GNU sed 4.2及以上版本,可以直接用i插入命令,空文件也能正常执行:

sed -i '1i\
##phasing=none\
#INFO	FORMAT	unknown
' file

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:36:06