sed 命令在间隔后替换多行

sed 命令在间隔后替换多行

我想在每隔 82 行间隔后将第一个字符替换CH23 行(例如第 83 行到 106 行)。我该如何使用sedor来做到这一点awk

答案1

生成示例文件

lines_per_set=82
         sets=3
lines=$(( $lines_per_set * $sets ))
  yes CC | head -n "$lines" |  nl > file

初始化两个计数器并对它们进行减计数。外部计数器复位触发重新初始化。

awk '
  !k       {j= 24; k= 82}
  j && j-- {sub(/C/,"H")}
  k--
' file

与上面 GNU sed 中的想法相同,其中计数器保存在保留空间中。

sed -En '
  G
  /^[^\n]*\n{1,24}$/s/C/H/
  P
  /\n{82}/{z;x;d;}
  z;H
' file

相关内容