unix - 遇到特定模式后如何为分界符之间的单词添加前缀

标签 unix sed scripting prefix

我是 sed 的新手,我想弄清楚是否可以为一行中字符串匹配后遇到的两个标记之间的所有单词添加前缀

假设我有一条线

abc xyz PAT1 { PAT2 PAT3 PAT4 } cdf fgd

PAT1 是字符串匹配,在这种情况下标记是 { 和 }

我想要的结果是

abc xyz PAT1 { prefix_PAT2 _prefix_PAT3 prefix_PAT4 } cdf fgd

我可以编写 C 代码来执行此操作,但我是脚本编写的新手,所以我想知道在 sed 中是否可行?

如果遇到字符串,我知道如何为一行的某些列添加前缀 但是 PAT2 PAT3 PAT4 可以是任何列,并且可以有超过 3 个

最佳答案

输入文件包含:

abc xyz PAT1 { PAT2 PAT3 PAT4 } cdf fg

试试下面的代码:

sed -i -e 's/PAT*/prefix_PAT/2g' filename

它将更新您的输入文件(文件名) 输出:

abc xyz PAT1 { prefix_PAT2 prefix_PAT3 prefix_PAT4 } cdf fgd

关于unix - 遇到特定模式后如何为分界符之间的单词添加前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32002864/

相关文章:

regex - 替换两个字符串之间的多次出现

bash - 如何使用 bash 用前导零填充文件名

bash - 检查进程是否正在运行,如果已经运行则退出

linux - 组合查找命令条件

linux - 八进制数字0权限的用途是什么

c - 错误: struct sockaddr_un' has no member named 'sun_port'

mysql - 成功执行后,我的 nodejs 脚本不会自行退出

linux - 如何使用 Python(独立于操作系统)获取 pid 列表和 PID 信息?

AWK 或 sed 方式粘贴非相邻行

引用 Date 时出现 Ruby NameError