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

如何用BASH/SED匹配指定行并将其重复指定次数?

解决方法

使用 awk 实现(推荐)

这是最简洁优雅的处理方式,直接通过 awk 完成文件内容的修改:

# 设置需要重复的次数
repeatnum=2
# 处理文件,将包含repeatline的行重复 repeatnum+1 次(原行+repeatnum次复制)
awk -v n="$repeatnum" '/repeatline/{for(i=0;i<=n;i++) print; next}1' template.inp > new_template.inp

命令细节:

  • -v n="$repeatnum":将 shell 中的repeatnum变量传递给 awk 内部使用
  • /repeatline/:匹配所有包含repeatline字符串的行
  • for(i=0;i<=n;i++) print:把匹配到的行打印n+1次,对应原行加上repeatnum次重复内容
  • next:跳过当前行的后续处理逻辑,避免重复输出
  • 1:awk 的简写语法,代表对未匹配的行执行默认操作(原样打印)

使用 sed 实现

如果更习惯用 sed,可以结合 shell 命令生成重复内容后替换原行:

repeatnum=2
# 提取目标行内容
target_line=$(grep "repeatline" template.inp)
# 生成重复的行文本
repeated_lines=$(printf "%s\n" "$target_line" | head -n $repeatnum)
# 替换原行为原行+重复内容
sed "/repeatline/c\\$target_line\n$repeated_lines" template.inp > new_template.inp

说明:

  • grep提取出包含repeatline的目标行
  • printf配合head生成repeatnum次重复的行内容
  • sed的c命令将原行替换为原行加上重复内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 16:42:28