sed コマンドは、間隔後に複数行を置き換えます。

sed コマンドは、間隔後に複数行を置き換えます。

82行の間隔(たとえば83行から106行)ごとに、最初の文字を23C行に置き換えたいと思います。またはを使用してこれをどのようにH実行できますか?sedawk

ベストアンサー1

サンプルファイルの生成

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

2つのカウンタを初期化してカウントダウンします。外部カウンタリセットは再初期化をトリガします。

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

おすすめ記事