UltraEdit用宏删除#开头的行并删除空行

这几天在倒腾Apache的httpd.conf,众所周知默认的httpd.conf有很多#开始的行用来表示注释,在配置文件中不起作用,看起来也非常的混乱,所以就想把#开始的注释行全部删除掉。但是也不不能傻傻的手动删除吧,那还用UE干啥,还不如用notepad,所以发现UE也很强大的宏(macro)功能。

点UE的“帮助”菜单,然后进“编辑宏命令”就是UE所有的宏指令,大概的看了一下后,进“宏”-"编辑宏"-"新建宏":
“宏名称”随便写,比如dd,快捷键随便写,比如Alt+D,然后下面的文本中默认已经有以下内容了:

InsertMode //插入模式
ColumnModeOff //关闭列模式
HexOff  //关闭16进制编辑模式

然后我就写了以下几句:

InsertMode
ColumnModeOn
HexOff
Find RegExp "#"
IfFound
DeleteLine
EndIf

解释一下:Find用来查找,后面的RegExp表示用正则表达式来匹配 引号内的内容表示行首以#开头的所有行。
IfFound和EndIf之间的语句表示如果发现匹配字符将执行的语句,这里我们要删除当前行,所以就用DeleteLine。

宏编辑好了,会其实你保存为一个*.MAC文件,以便以后加载。接下来运行,运行的方法有两种,一种是一直按住在上面设置的快捷键Alt+D不放,直到文件结束,还有种是点菜单“宏”-“多次运行”-“运行宏直到文件尾”,不过到了文件尾,宏还是没有停止执行,只有手动点“取消“。其实我们可以记下文件的行数,然后点菜单“宏”-“多次运行”-”指定当前宏和宏运行次数“输入500(500是因为#开头的行一定比所有的行数要小,所以500是极限),然后等待自动搞定。

结果发现还有很多显示四个空格然后一个#的没有被删除,比如:

#AddType text/html .shtml
#AddOutputFilter INCLUDES .shtml

同样用正则表达式来处理:

InsertMode
ColumnModeOn
HexOff
Find RegExp "%[][][][]#"
IfFound
DeleteLine
EndIf

[ ]

匹配任何括号中的单个字符或范围

然后用”搜索“-”替换“(ctrl+r),”查找什么“输入**%[^t]++^p **,勾选”正则表达式“:UltraEdit,可以删除部分的空白行,因为有些空白行不匹配以上字符,具体原因是^p表示一个DOS换行,有些空白行在HEX模式下有两个0D0A,原因未知。
不过现在总算文件是清晰了,其实有更好的方法的,就是暂时还没发现。

-----------
gossip:
Xmas's Eve Shopping出去Shopping了一下,发现到处都是用充气娃娃棒槌到处打人的,干脆叫”K人节“。我就纳闷了,西方都在家团聚吃大火鸡,你丫的跑出来折腾啥玩意儿啊,还让俺们police叔叔晚上都回不了家,看你几丫的疯,你疯就疯,别用刀子捅人啊,太不安全了,当然以上现象仅限于在本地发生,还是回寝宫洗洗睡鸟。

标签: UltraEdit

已有 4 条评论

  1. UE……懒得学那么多命令,一直当有高亮语法功能的记事本用着=。。=

    不过看起来学一学也不错

  2. 圣诞节快乐~

    1. 其实不止圣诞,我一直都很快乐~哈哈

  3. 不是很懂`只能看明白开启替换删除...

添加新评论