我有一个很长的端口映射,我想在其中替换一堆
SignalName[i],
with
.SignalName(SignalName[i]),
我想我可以用正则表达式轻松地做到这一点,但我无法弄清楚如何做到这一点。有任何想法吗?
假设 SignalData 是包含端口映射信息的文件,则以下内容将执行您想要的操作。
sed -si 's/\([a-zA-Z]\+\)\(\[[^\]]*\]\)/\.\1(\1\2)/g' SignalData
在 sed 中 s 代表替换,第一对 // 之间的正则表达式用于匹配每一行。如果找到匹配项,则使用直到下一个 / 之间的表达式来替换匹配的内容。
正则表达式的解释
\([a-zA-Z]\+\) - Matches a series of alphabets (like SignalName) and captures it into
\1. If you want only the SignalName string to match, replace [a-zA-Z]\+ with SignalName.
\(\[[^\]]*\]\) - Matches the [some character] part and captures it into \2
最后我们使用这些捕获的字符串来构造所需的字符串。
如果您想在运行文件之前进行试验,请使用 sed -s 而不是 sed -si。这将在标准输出上显示转换的结果,而无需实际更改文件
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)