加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 如何用sed替换一行的一部分?

发布时间:2020-12-14 06:00:02 所属栏目:百科 来源:网络整理
导读:我有一个包含许多行的文件(行分隔符是?).每一行,我有许多元素,由分隔符’*’分隔. 我想做的是, ?我将在我的文件中有一个以字符串TRN开头的行.它可以包含4个(包括TRN)或更多数据点.就像是, TRN*1*S521000035*1020494919~TRN*1*S521000035*1020494919*78798980
我有一个包含许多行的文件(行分隔符是?).每一行,我有许多元素,由分隔符’*’分隔.
我想做的是,
?我将在我的文件中有一个以字符串TRN开头的行.它可以包含4个(包括TRN)或更多数据点.就像是,

TRN*1*S521000035*1020494919~
TRN*1*S521000035*1020494919*787989800~

我想将这行中的第四个数据点替换为abc123.即

TRN*1*S521000035*abc123~
TRN*1*S521000035*abc123*787989800~

我尝试使用正则表达式的sed命令

sed -i 's/^TRN*(.*)*(.*)*(.*)$/abc123/g' file.txt

但整个字符串都被替换为abc123.

是否可以使用sed命令仅更改其第4个数据点?

解决方法

使用GNU sed:

$sed -r -i 's/^((w+*){3})w*(.*)/1abc1233/g' file.txt

输出:

TRN*1*S521000035*abc123~
TRN*1*S521000035*abc123*787989800~

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读