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'

関連情報