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

如何使用sed/awk在指定行后插入带正确换行格式的内容

在数组头部插入元素的Shell命令实现

原始文件与需求

原始文件内容如下:

name = [
    "victor",
    "linda",
    "harris",
    "sandy"
] 

需要通过sed/awk命令在数组第一个元素前插入新条目"NEW INPUT HERE",,保持原有缩进格式,最终输出效果:

name = [
    "NEW INPUT HERE",
    "victor",
    "linda",
    "harris",
    "sandy"
] 

之前尝试的命令存在换行异常、格式不符的问题,可直接使用下面两种方案实现。

方案1:sed命令实现

直接匹配数组开头的name = [行,在该行后追加新元素即可,不需要手动拼接换行符,sed会自动处理换行逻辑,不会出现格式错乱:

# Linux环境(GNU sed)直接执行,预览输出效果
sed '/name = \[/a\    "NEW INPUT HERE",' filename

# 需要直接修改原文件的话加-i参数
sed -i '/name = \[/a\    "NEW INPUT HERE",' filename

如果是macOS自带的BSD sed,使用如下写法:

sed '/name = \[/a\
    "NEW INPUT HERE",
' filename

之前手动拼接$'\n'的写法容易因为shell转义问题导致换行失效,用sed自带的a\追加命令语法更稳定,新行前面的4个空格和原有元素缩进完全一致。

方案2:awk命令实现

逐行遍历文件内容,匹配到数组开头行时,先打印当前行,再打印带正确缩进的新元素行,其余行正常输出即可:

# 预览输出效果
awk '/name = \[/{print; print "    \"NEW INPUT HERE\","; next}1' filename

# 保存修改到文件
awk '/name = \[/{print; print "    \"NEW INPUT HERE\","; next}1' filename > temp_file && mv temp_file filename

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:18:21