![如何使用 sed 仅替换特定的 20 个字符](https://linux22.com/image/185454/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20sed%20%E4%BB%85%E6%9B%BF%E6%8D%A2%E7%89%B9%E5%AE%9A%E7%9A%84%2020%20%E4%B8%AA%E5%AD%97%E7%AC%A6.png)
文件.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
- 否:数字 (4) – 唯一标识每本书
- 标题:字母数字(30)
- 作者:人物(20)
- 出版者: 人物(20)
- 版本:人物(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'