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

cygwin/unix查找某些模式之后/之前的文本,unix,sed,cygwin,Unix,Sed,Cygwin,考虑到我们有文本: <li><a href="link">text1</a> 在text1之前获取链接url的最快方法是什么 考虑到同样的情况,如何才能找到链接后面的文本,f.e。 提供链接时,需要获取文本1获取链接 试试格雷普 grep -Po '(?<=href=")[^"]*' file 我会给你发短信 试试你的例子: kent$ echo '<li><a href="link">text1</a>'|gr

考虑到我们有文本:

<li><a href="link">text1</a>
在text1之前获取链接url的最快方法是什么

考虑到同样的情况,如何才能找到链接后面的文本,f.e。 提供链接时,需要获取文本1

获取链接

试试格雷普

grep -Po '(?<=href=")[^"]*' file
我会给你发短信

试试你的例子:

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

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

要查找“链接”,请执行以下操作:

echo '<li><a href="link">text1</a>' | sed 's/.*"\([^"]\+\)">text1.*/\1/'
echo '<li><a href="link">text1</a>' | grep -oP '[^"]*(?=">text1)'
要查找“text1”,请执行以下操作:

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

好吧,问题是在文件中我有更多的href,所以我可以只使用href作为链接位置。如果我在链接之间有空间呢?@SauliusS:我不确定你要指示的空间在哪里。你是说像这样:?请使用反勾号格式化代码。例如,考虑到编辑最后一次评论失败,编辑在这里Text 1 Text 1 Text 1:做类似类型操作的最佳方法是什么?背虱:做不到work@SauliusS字体对不起,我想我不明白你想要实现什么。我建议用上面的示例数据编辑您的问题,并列出一些预期输出。
echo '<li><a href="link">text1</a>' | grep -oP '(?<="link">)[^<]*'