从html文件中提取字符串

时间:2014-04-08 09:45:53

标签: string awk extract

我有很多html文件。每个文件都包含以下行:

<img src="<BASE_HTTP_URL>bladf.gif" border="0" alt="" />

我需要首先提取html文件名,然后提取BASE_HTTP_URL之后的文件名。在这种情况下,它是bladf.gif它可以是任何文件名和许多类型的扩展。

我尝试使用此awk提取文件的名称:

for f in *.html
do
awk -F'"' '/img src=/{print $4}' $f
done

但结果我得零。如何打印文件名,旁边是BASE_HTTP_URL旁边的文件名?

感谢

2 个答案:

答案 0 :(得分:0)

awk -F'"' '/img src=/{match($2, "(.*/)(.*)", url); print $2, url[1], url[2]}'

如果我正确理解你的需要。

以下是示例输出:

alex@rhyme ~ $ echo '<img src="http://some/url/bladf.gif" border="0" alt="" />' | awk -F'"' '/img src=/{match($2, "(.*/)(.*)", url); print $2, url[1], url[2];}'
http://some/url/bladf.gif http://some/url/ bladf.gif
alex@rhyme ~ $ awk --version
GNU Awk 4.0.2
Copyright (C) 1989, 1991-2012 Free Software Foundation.

你的awk版本是什么?

答案 1 :(得分:0)

让我们从这开头:

$ cat file1.html
foo
<img src="<BASE_HTTP_URL>bladf.gif" border="0" alt="" />
bar

$ cat file2.html
foo
<img src="<BASE_HTTP_URL>whatever.gif" border="0" alt="" />
bar

$ awk -F'"' '/img src=/{print FILENAME, $2}' *.html
file1.html <BASE_HTTP_URL>bladf.gif
file2.html <BASE_HTTP_URL>whatever.gif

或:

$ awk -F'"' 'sub(/<img src="<BASE_HTTP_URL>/,""){print FILENAME, $1}' *.html
file1.html bladf.gif
file2.html whatever.gif

如果这些都不是您想要的,请更新您的问题以澄清。