使用Sed工具查找替换子串并在原字符串前插入修改后字符串
文本批量处理需求与解决方案
原始文件内容
lebnassvm0a-dr test1 /vol/test1 lebnassvm0a-dr test2 /test2 lebnassvm0a-dr test3 /test3 stgtestsvm1-dr test21 /test21 stgtestsvm1-dr test22 /test22 stgtestsvm1-dr test23 /test23
需求
将每行第一个字段中的-dr替换为-drt,并将替换后的字段插入到原行的最前方。
预期结果
lebnassvm0a-drt lebnassvm0a-dr test1 /vol/test1 lebnassvm0a-drt lebnassvm0a-dr test2 /test2 lebnassvm0a-drt lebnassvm0a-dr test3 /test3 stgtestsvm1-drt stgtestsvm1-dr test21 /test21 stgtestsvm1-drt stgtestsvm1-dr test22 /test22 stgtestsvm1-drt stgtestsvm1-dr test23 /test23
解决方案
使用sed命令可快速完成批量替换:
sed 's/\([^ ]*-dr\)/\1t \1/' input.txt > output.txt
命令说明
\([^ ]*-dr\):捕获每行第一个字段(以空格为分隔)里包含-dr的内容\1t \1:把捕获的内容后追加t,再拼接原捕获内容,替换原匹配部分,实现新增字段+原字段的效果
若要直接修改原文件,可添加-i参数(BSD系统需写成-i ''):
sed -i 's/\([^ ]*-dr\)/\1t \1/' input.txt
内容的提问来源于stack exchange,提问作者Bob Moore
相关产品推荐
相关产品推荐

