82줄 간격 (예: 83~106행) 마다 첫 번째 문자를 23 C
줄로 바꾸고 싶습니다. 또는 을 사용하여 이 작업을 H
어떻게 수행할 수 있습니까 ?sed
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