使用awk读取模式中的文件

时间:2010-07-07 11:21:42

标签: awk

我有以下方式的输入文件

<td> Name1 </td>
<td> <span class="test"><a href="url1">Link </a></span></td>
<td> Name2 </td>
<td> <span class="test"><a href="url2">Link </a></span></td>

我想要一个awk脚本来读取此文件并以下列方式输出

url1 Name1
url2 Name2

任何人都可以帮助我解决这个微不足道的问题吗?感谢。

5 个答案:

答案 0 :(得分:2)

提取一个href是相对简单的,只要它们符合XHTML标准并且一行中最多只有一个并且你不关心封闭标签,但perl更容易:

$ perl -ne 'print "$1\n" if /href="([^"]+)"/'

如果您关心封装标签或它们不符合标准,则无法使用正则表达式来解析HTML。这是不可能的。

添加:oops,你关心上下文,忘记regexp并使用真正的HTML解析器

答案 1 :(得分:1)

这是一个完成工作的awk脚本

awk '
/a href=\".*\"/ { sub( /^.*a href=\"/,"" ); sub(/\".*/,"");  print $0, name }
                { name = $2 }
'

答案 2 :(得分:0)

这可能有效:

awk 'BEGIN
     {i=1}{line[i++]=$0}
     END
     {
      j=1; 
      while (j<i) 
      {print line[j+1] line[j]; j+=2}
     }' yourfile|awk '{print substr($4,7,length($4)-6),$6}'

答案 3 :(得分:0)

答案 4 :(得分:0)

awk 'BEGIN{RS="></td>\n"; FS="> | </|\""}{print $7, $2}' infile

每2行作为记录。