使用shell脚本在字符串模式后在文件中查找字符串

时间:2014-10-17 10:35:47

标签: regex shell

我的输出文件有4行

storefront/storefront.war/location/header-info.jsp:30:<input type="hidden" id="welcomeConfigValue" value="${welcomeConfig}"/>
storefront/storefront.war/location/header-info.jsp:31:<span id="selected-location" class="top-txt top-nav-fix">
storefront/storefront.war/location/header-info.jsp:33:<span id="headRestName"></span><span class="header-spacing"> | </span><span id="headRestPhone"></span><span class="header-spacing"> | </span>
storefront/storefront.war/location/header-info.jsp:35:<a href="#" class="capitalize link-wht" id="location-show"><fmt:message

我希望在id=之后使用UNIX shell获取输出字符串。

即,输出应该是这样的:

welcomeConfigValue
selected-location
headRestName
headRestPhone
location-show

2 个答案:

答案 0 :(得分:0)

你可以尝试使用grep:

grep -Po '\sid="\K[^"]*' file

答案 1 :(得分:0)

<强>命令:

sed -r 's/(^.*id=")([^"]+)(.*$)/\2/g' < file.txt

<强>输出:

sdlcb@Goofy-Gen:~/AMD$ sed -r 's/(^.*id=")([^"]+)(.*$)/\2/g' < ff.txt
welcomeConfigValue
selected-location
headRestPhone
location-show

在这里,我们使用“(”&amp;“)”将模式分组为3组。第一组包含从行开头到“id =”包括的所有字符。第二组包含“s”之间的字符(即'id =“'和对'''之间的字符)。第三组包含剩余的字符直到行尾。然后我们只是避免第一和第三种模式。