awk - 带有文本和多个分隔符的 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
解决方案
它更容易使用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
推荐阅读
- c# - JSON to object 不适用于 ajax 调用
- spring-boot - SpringBoot 2 + Junit5:带有@Value的null
- python - 主题分布:使用 LDA 对我的文档进行聚类的问题
- reactjs - 当我将它传递给一个函数并尝试在那里访问它时,React prop 返回 undefined
- asp.net-core-2.0 - 是否可以使用来自配置服务器的值初始化 .net 核心非 pcf 部署的应用程序
- javascript - 为什么|| 运营商的行为是这样的?
- c++ - 为什么 std::equal_to 会导致动态分配?
- bash - 使用 Shell 在 printf 中显示数字和 %d 之间的数学表达式的结果
- excel - 更新数据用户表单后存储为文本的值
- xamarin - MvvmCross iOS UILabel AttributedText 与语言转换器