sed를 사용하여 특정 20자만 바꾸는 방법

sed를 사용하여 특정 20자만 바꾸는 방법

파일.dat

No      Name                       Title               Publisher           Edition

1001 Programming in Java By BPB    Balaguruswamy       BPB                 Second 
1002 Computer Networks             Tanenbaum           Pearson             Fifth
1003 Operating Systems             Chaudhari           Jaico               First
  1. 아니요: 번호 (4) – 각 도서를 고유하게 식별합니다.
  2. 제목: 영숫자(30)
  3. 작성자: 캐릭터(20)
  4. 출판사 : 사람들(20)
  5. 버전: 캐릭터(9)

BPB모든 출판사 이름을 ->로 바꾸고 싶습니다 .THM 게시자 열 아래에서만. 를 사용하면 sed대체할 뿐만 아니라발행자칼럼뿐만 아니라이름기둥. 나는 단지 sed사이에서만 일하고 싶다55번째 문자도착하다74번째 문자

다음을 사용하여 문자 55-74를 추출했습니다.

while IFS= read -r line; do
    echo ${line:55:20}
done < $file

특정 20자만 바꾸려면 어떻게 해야 하나요?

미리 감사드립니다

답변1

그것은 다음과 같습니다:

게시자 열 전체를 바꿉니다( BPB뒤에 공백 17개).

sed 's/^\(.\{55\}\)BPB\( \{17\}\)/\1THM\2/'

게시자 열에서 문자열이 나타날 때마다 BPB문자열을 바꾸려면 다음을 수행하세요 .THM

sed '
  :1
    s/^\(.\{55,72\}\)BPB/\1THM/
  t1'

관련 정보