如何使用sed复制逗号前字符串并追加到文件行内斜杠之后
使用sed实现文本处理的方案
直接运行对应命令即可完成「复制每行逗号前字符串、追加到同一行斜杠后」的需求:
- 预览处理结果(不修改原文件):
sed -E 's/^([^,]+)(.*\/)$/\1\2\1/' 待处理文件路径
- 直接修改原文件:
sed -i -E 's/^([^,]+)(.*\/)$/\1\2\1/' 待处理文件路径
命令原理说明
-E参数:启用扩展正则匹配模式,简化分组语法,不需要给括号加转义符- 正则匹配逻辑拆解:
^([^,]+):从行首起始位置匹配,捕获第一个逗号前的所有字符(即需要复制的目标字符串),存储为第1个捕获组(.*\/)$:匹配逗号后所有内容直到行尾的斜杠字符,存储为第2个捕获组- 替换规则
\1\2\1:按顺序拼接「第1组内容 + 第2组内容 + 第1组内容」,刚好实现将复制的字符串追加到斜杠后的效果
效果验证
使用提供的示例原始内容执行命令,输出结果完全符合预期:
text1,Information /text1 text2,Information /text2 text3,Information /text3
适配提示:如果文本中斜杠不在行尾、或单行存在多个斜杠,上述命令默认会把内容追加到每行最后一个斜杠之后。如果需要固定追加到第一个斜杠之后,把正则替换为
s/^([^,]+)([^\/]*\/)/\1\2\1/即可。
内容的提问来源于stack exchange,提问作者Hans
相关产品推荐
相关产品推荐

