cygwin / unix在某些模式之后/之前查找文本

时间:2013-02-10 12:56:52

标签: unix sed cygwin

考虑我们有文字:

<li><a href="link">text1</a>

获取“链接”的最快方式是什么(在text1之前的网址)。

考虑到同样的情况,如何在链接后找到文本,例如: 提供“链接”,期望得到text1

2 个答案:

答案 0 :(得分:0)

获取链接

尝试grep

grep -Po '(?<=href=")[^"]*' file

用你的例子测试:

kent$  echo '<li><a href="link">text1</a>'|grep -Po '(?<=href=")[^"]*'
link

获取文字

假设您在变量l中保存“link”:

grep -Po "(?<=href=\"$l\">)[^<]*" 

会给你发短信

试试你的例子:

kent$  l=link                                                               

kent$  echo '<li><a href="link">text1</a>'|grep -Po "(?<=href=\"$l\">)[^<]*"
text1

答案 1 :(得分:0)

使用sed

要查找“链接”:

echo '<li><a href="link">text1</a>' | sed 's/.*"\([^"]\+\)">text1.*/\1/'

要查找'text1':

echo '<li><a href="link">text1</a>' | sed 's/.*"link">\([^<]\+\).*/\1/'

使用grepPerl regexp:

要查找“链接”:

echo '<li><a href="link">text1</a>' | grep -oP '[^"]*(?=">text1)'

要查找'text1':

echo '<li><a href="link">text1</a>' | grep -oP '(?<="link">)[^<]*'