我使用的是 notepad++,我编写了一些正则表达式,它们简化了我格式化文件的工作。但是,要将文件格式化为所需的格式,我必须执行多个正则表达式,我想知道是否有某种可能的方法可以存储我的正则表达式列表,然后逐个执行。
这是需要格式化的文件 tree.txt。
overview/Main_Overview/Gas Management/BOG MV/BOG MV Process Alarms:Tag=BOG Heaters Process Alarms:Device=:Color=-3355444
overview/Main_Overview/Gas Management/BOG MV/BOG MV Process Trip:Tag=BOG Heaters Process Alarms-1:Device=:Color=-3355444
overview/Main_Overview/Gas Management/BOG MV/BOG MV External Trip:Tag=BOG Heaters Process Alarms-1-1:Device=:Color=-3355444
正则表达式将截断上述文本并按此 sed 格式排列。
s/BOG Heaters Process Alarms:/BOG MV Process Alarms:/g
s/BOG Heaters Process Alarms-1:/BOG MV Process Trip:/g
s/BOG Heaters Process Alarms-1-1:/BOG MV External Trip:/g
为了达到上述结果,我将依次执行一些正则表达式操作。
Find- .*/
Replace-
Find- Device=:.*
Replace-
Find- :Tag=
Replace- /
Find- (^.*/)([^/]+):
Replace- /\2/ \1
Find- ^
Replace- s
Find- $
Replace- g
使用上述正则表达式后,我得到了所需的格式,但我需要知道是否可以组合这些格式,这样我就不需要在每个表达式完成后手动执行这些操作,或者将其简化为一个表达式。谢谢
答案1
您已经拥有所需的元素,尤其是分组。您需要找到:
^.*/(.*:)Tag=(.*:)Device=.*$
然后替换为:
s/\2/\1/g
请注意,这将提供sed
您想要生成的引用参数,而您的序列将省略查找字符串中的冒号并在替换字符串sed
中添加前导空格,从而得到:-sed
s/BOG Heaters Process Alarms/ BOG MV Process Alarms:/g
s/BOG Heaters Process Alarms-1/ BOG MV Process Trip:/g
s/BOG Heaters Process Alarms-1-1/ BOG MV External Trip:/g
要重现您的序列,您需要搜索:
^.*/(.*):Tag=(.*:)Device=.*$
然后替换为:
s/\2/ \1/g
然而,sed
除非按相反的顺序进行,否则替换不会起作用。