全部 使用vim元字符\ _。或awk,我已經匹配了多行,但我不知道如何將其抽出或解壓縮到其他文件中。是否有通用的方法來執行此操作?如何提取已經匹配多行模式的文本?
2
A
回答
3
這個答案適用於Vim,而不是Awk。
我可以建議:
function CopyPatternToRegisterZ(pat)
let @z .= a:pat
return a:pat
endfunction
然後:
:let @z = ''
:%s/your_pattern/\= CopyPatternToRegisterZ(submatch(0)) /g
然後你可以用"zp
你的比賽粘貼到另一個文件。
有關此語法的詳細信息,請參閱:help sub-replace-expression
。
1
在awk中使用print然後將輸出重定向到其他文件。
awk 'BEGIN {FS =" "}; { if ($0 ~ /(expression)/) { print $0 } }' inputfile.txt > outputfile.txt
0
只有到模式複製到另一個文件
"between marks
:'a,'b g/^Error/ . w >> errors.txt
"entire file
:% g/pattern/ . w >> log.txt
"to display "whit numbers", lines containing the desired pattern
:g/pattern/#
+0
這不回答這個問題。這些命令複製行,而不是多行模式! – Benoit 2011-03-11 06:33:27
0
如果你在搜索的開始,y//e<CR>
將複製整個匹配的字符串到默認的寄存器。請注意,在此動作n
將帶您到當前搜索結束(因爲e
偏移標誌被保存),如果您想要n
繼續使您開始,您應該另外鍵入//<CR>
(清除所有偏移標誌)。因此,整個密鑰序列是
/<pattern><CR>y//e<CR>//<CR>N
+0
也許是明確的,使用'// s'不會傷害。所以要完成你的答案,這可以記錄到一個宏。 – Benoit 2011-03-11 15:50:01
相關問題
- 1. 僅提取模式匹配文本
- 2. 從文本文件中提取多個匹配模式
- 3. 匹配和提取文件中的多行模式
- 4. 正則表達式匹配上提取多行文本區(C#)
- 5. 匹配多行模式
- 6. 多行模式匹配
- 7. 已知的模式匹配
- 8. 從行/文件中提取所有匹配的模式
- 9. 如何在匹配perl文本後提取所需的行?
- 10. Python的提取模式匹配
- 11. simplehtmldom模式的URL提取和匹配
- 12. 搜索文本字符串中的模式,然後提取匹配模式
- 13. awk的擴展模式匹配(嵌入圖案在已經匹配的字符串行動匹配)
- 14. PostgreSQL jsonb嵌套模式匹配跨多行的文本搜索
- 15. 匹配多行文本模式後的字符串
- 16. 已經sed忽略不匹配的行
- 17. 在已經匹配的模式中可以執行正則表達式嗎?
- 18. 多模式匹配
- 19. 多模式匹配
- 20. 提取字符串匹配條件的模式匹配
- 21. 模式匹配文件中的文本?
- 22. 提取字符串匹配/模式
- 23. 數據提取和模式匹配
- 24. 提取從字符串匹配模式
- 25. stringtemplate提取變量匹配模式
- 26. 「模式匹配」和提取在C
- 27. 預浸匹配提取數字模式
- 28. 與多個匹配匹配的模式
- 29. Excel公式提取多個匹配值
- 30. 如何提取匹配模式的子字符串?
不需要'CopyPatternToRegisterZ()'。改用'setreg('Z',submatch(0))'。如果你想這樣做linewise然後'setreg('Z',submatch(0),'l')' – 2011-03-10 15:30:01
@Peter Rincker:'setreg'返回寄存器的值嗎?如果不是更換會導致一些問題。 – Benoit 2011-03-10 15:45:17
成功時返回零,失敗時返回非零。我現在看到爲什麼你創建了自己的功能。儘管運行替換後一個簡單的'u'就可以達到這個效果。 – 2011-03-10 15:53:08