首页 > 解决方案 > 带有文本和多个分隔符的 sed

问题描述

我正在使用 sed 删除一些文本并替换它,我可以完成大部分工作,但我在替换之前和之后的 5 个冒号的字符串时处于停滞状态。关于我要去哪里错的任何想法?

我有的文本文件:

The user name1 ONE:TWO:THREE:FOUR:FIVE:NewName:SIX
The user name2 SEVEN:EIGHT:NINE:TEN:ELEVEN:NewName:TWELVE
The user name3 Thirteen:Fourteen:Fifteen:Sixteen:NewName:Seventeen

命令:

sed 's/^/ The user /'| sed 's/:.*/ My New Name is/'

输出:

The user name1 My New Name is

预期输出:

The user name1 My New Name is NewName

标签: awksed

解决方案


它更容易使用awk

awk '{print $1, $2, $3, "My New Name is", a[split($NF, a, /:/)-1]}' file

The user name1 My New Name is NewName
The user name2 My New Name is NewName
The user name3 My New Name is NewName

推荐阅读