我有一個HTML文件,我想抓取文件中的所有鏈接並使用Vim將其保存到另一個文件中。使用Vim將正則表達式搜索結果保存到文件中
我知道,正則表達式將是這樣的:
:g/href="\v([a-z_/]+)"/
,但我不知道在哪裏可以從這裏走。
我有一個HTML文件,我想抓取文件中的所有鏈接並使用Vim將其保存到另一個文件中。使用Vim將正則表達式搜索結果保存到文件中
我知道,正則表達式將是這樣的:
:g/href="\v([a-z_/]+)"/
,但我不知道在哪裏可以從這裏走。
將光標放在第一行/列,試試這個:
:redir > output.txt|while search('href="', "We")|exe 'normal yi"'|echo @"|endwhile|redir END
你試過嗎?
:克/ HREF = 「\ V([A-Z _ /] +)」,否則/ W >> OUTFILE
這是行不通的。它會導致搜索詞被正確找到,但它只是將文件的全部內容輸出到新的outfile中。 – Sasha 2009-06-23 05:45:57
這裏的挑戰在於提取所有的鏈接,其中可能有多個上線,你可以簡單地做:
" Extract all lines with href=
:g/href="[^"]\+"/w >> list_of_links.txt
" Open the new file
:e list_of_links.txt
" Extract the bit inside the quotation marks
:%s/.*href="\([^"]\+\)".*/\1/
最簡單的方法很可能會做到這一點:
" Save as a new file name
:saveas list_of_links.txt
" Get rid of any lines without href=
:g!/href="\([^"]\+\)"/d
" Break up the lines wherever there is a 'href='
:%s/href=/\rhref=/g
" Tidy up by removing everything but the bit we want
:%s/^.*href="\([^"]\+\)".*$/\1/
或者(以下類似的主題),
:g/href="[^"]\+"/w >> list_of_links.txt
:e list_of_links.txt
:%s/href=/\rhref=/g
:%s/^.*href="\([^"]\+\)".&$/\1/
(見:幫助另存爲,:求助:vglobal,:求助:S)
但是,如果你真的想要做一個更直接的方式,你可以做這樣的事情:
" Initialise register 'h'
:let @h = ""
" For each line containing href=..., get the line, and carry out a global search
" and replace that extracts just the URLs and a double quote (as a delimiter)
:g/href="[^"]\+"/let @h .= substitute(getline('.'), '.\{-}href="\([^"]\+\)".\{-}\ze\(href=\|$\)', '\1"', 'g')
" Create a new file
:new
" Paste the contents of register h (entered in normal mode)
"hp
" Replace all double quotes with new-lines
:s/"/\r/g
" Save
:w
最後,你可以用一個for循環的函數來完成它,但我會留給別人來寫!
傑夫肉丸楊是幾乎沒有。
至於薩沙,如果你使用它W¯¯完整的原始文件寫入到outfile中
要只寫匹配的行,你必須添加寫道「」 'w'前:
:g/href="\v([a-z_/]+)"/ .w >> outfile
請注意outfile需要存在。
如果文件不存在,或者你想創建文件,你可以這樣做:`.w!` – Tom 2015-04-29 21:05:46
明確REG:X
qxq
搜索regex
(無論)和追加到章:X
:g/regex/call setreg('X', matchstr(getline('.'), 'regex') . "\n")
打開一個新標籤
:tabnew outfile
放REG:X
"xp
寫文件
:w
「我們」在這裏意味着什麼? – allenhwkim 2011-03-01 16:12:57
`W` =不包裝文件末尾的搜索。 `e` =移動到比賽結束。參見`:h search()`。 – 2011-03-01 20:13:20