我有很多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
旁边的文件名?
感谢
答案 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
如果这些都不是您想要的,请更新您的问题以澄清。