Text-Processing

如何使用 sed 僅替換特定的 20 個字元

  • December 26, 2020

文件.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,它不僅替換Publisher列下,還替換Name列下。我只想sed第 55 個字元第 74 個字元之間工作

我已經使用提取了第 55-74 個字元

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

我應該怎麼做才能只替換特定的 20 個字元?

提前致謝

就像是:

要完全替換發布者列(BPB後跟 17 個空格:

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

要將BPB字元串替換THM為發布者列中出現的任何位置:

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

引用自:https://unix.stackexchange.com/questions/626204