【发布时间】:2019-01-09 11:29:45
【问题描述】:
我有文件teste.txt,内容如下:
02183101399205000 GBTD9VBYMBQ 04455927964
02183101409310000 XBQMPL1C93B 27699484827
54183101003651000 1WFG3SNVDG9 71530894204
我执行命令
sed -e 's/^\(.\{18\}\)[0-9]/\1#/g' teste.txt
结果是:
02183101399205000 GBTD9VBYMBQ 04455927964
02183101409310000 XBQMPL1C93B 27699484827
54183101003651000 #WFG3SNVDG9 71530894204
只有第 3 行中的第 19 位从 1 更改为 #。
我想知道如何将所有数字字符从第 19 位更改为第 30 位。
预期结果是:
02183101399205000 GBTD#VBYMBQ 04455927964
02183101409310000 XBQMPL#C##B 27699484827
54183101003651000 #WFG#SNVDG# 71530894204
【问题讨论】:
-
Sed 正在执行您的模式所要求的操作 - 在一行的开头查找 18 个字符,然后紧跟一个数字字符。 awk 将是完成这项工作的更好工具。
标签: unix sed replace character