82行の間隔(たとえば83行から106行)ごとに、最初の文字を23C
行に置き換えたいと思います。またはを使用してこれをどのようにH
実行できますか?sed
awk
ベストアンサー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