如何使用Sed将插入的提示行与后续内容合并为单行输出
现有命令的问题根源
原命令使用i命令做行前插入,会在每个目标行之前生成完全独立的新行承载"user id is:"文本,天然和后续的用户内容行分离,这就是提示文本单独占行的核心原因。
除此之外原命令的执行顺序还有隐藏逻辑漏洞:如果先做行前插入、再删除#开头的注释行,后续注释行因为开头被插入了提示文本,不再满足#开头的匹配规则,会出现本该被删除的注释残留的问题。
调整后的实现方案
调整思路:将独立行插入的逻辑改为行首文本拼接,同时调整命令执行顺序保留原有所有业务逻辑,最终可实现提示和用户内容同行展示的效果:
- 先执行删除所有#开头注释行的操作,从根源上保证注释行在被处理前就完成规则匹配删除
- 对保留的有效行,在第1行到匹配到
[option]标记行的范围内,逐行在开头拼接"user id is: "提示文本 - 最后执行原有的删除所有
~字符的操作
对应的完整Sed命令为:sed -e '/^#/d' -e '1,/\[option\]/s/^/user id is: /' -e 's/~//g' /test/data/USER.FIDS
效果验证
处理后的输出完全匹配预期格式:
user id is: qqq TTK
user id is: jeff TTL RODGERS
user id is: mark TP4 THOMSON
内容的提问来源于stack exchange,提问作者ffej01
相关产品推荐
相关产品推荐

