本文以提出spring中配置文件applicationContext.xml中所有bean的id为例,讲解如何使用vi的v和s命令两步提取出想要的内容。
applicationContext.xml文件内容如下:
<?xml version = "1.0" encoding = "UTF-8" ?> <beans xmlns ="http://www.springframework.org/schema/beans" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xmlns:context ="http://www.springframework.org/schema/context" xsi:schemaLocation ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd" > <bean id="bookService" class = "BookServiceImpl"> <property name ="appProfile" ref= "myProfile"> </property> </bean> <bean id="libService" class = "LibServiceImpl"> <property name ="triggers" > <list> < ref local ="bookService" /> </list> </property> <property name="threadCountProperties" > <props> < prop key ="threadCount" > 1</ prop > </props> </property> </bean> </beans> |
目标是将bean id(bookService和libService)提取出来。步骤如下:
1)使用v命令把不包含<bean\ 的行给删掉
:v/<bean\ /d
applicationContext.xml内容变成如下:
<bean id="bookService" class = "BookServiceImpl">
<bean id="libService" class = "LibServiceImpl"> |
2)通过s命令使用正则表达式把每一行替换成我们想提出的内容
:%s/.\{-\}id="\(.\{-\}\)".*$/\1
applicationContext.xml内容变成如下:
bookService
libService |
至此,两个bean id(bookService和libService)被成功提取出来。
该方法会修改原来文本内容,为了不影响原来的文本,请copy一份专门用来提取信息。另外这个只是个人用的比较顺手的方法,如果大家有更好的方法可以一起讨论一下。