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

sed命令仅在首个[后插入文件内容的问题求助

解决sed仅在首个[后插入文件内容的问题

你的核心问题是原sed命令会匹配所有含[的行,导致重复插入内容。要实现仅在第一个[后插入,需要调整sed的地址范围与命令的结合方式:

正确命令

sed -i -e '0,/\[/ { /\[/ r '"${NEWPERMS}"' }' "${CURRENTPERMS}"

或者使用双引号(注意变量展开的正确性):

sed -i -e "0,/\[/ { /\[/ r ${NEWPERMS} }" "${CURRENTPERMS}"

原理说明

  • 0,/\[/:限定处理范围为从文件开头到第一个匹配[的行,后续行不再纳入处理范围。
  • { /\[/ r ${NEWPERMS} }:在上述范围内,仅当行匹配[时,执行r命令插入NEWPERMS文件的内容。这就确保只有第一个[所在行的后方会插入目标内容。

为什么之前的尝试失败

直接使用0,/\[/r ${NEWPERMS}时,sed会将整个0,/\[/范围内的每一行都执行r命令,而非仅匹配[的行;同时如果引号处理不当,还可能导致NEWPERMS的文件名被错误解析为命令的一部分,出现插入文件名而非文件内容的问题。

内容的提问来源于stack exchange,提问作者Jeffrey Van Laethem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:31:03