所有 使用vim元字符\ _。或者awk,我已经匹配了多行,但我不知道如何将它们拉出或提取到其他文件中。是否有一般方法可以做到这一点?
答案 0 :(得分: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 :(得分:1)
在awk中使用print然后将输出重定向到其他文件。
awk 'BEGIN {FS =" "}; { if ($0 ~ /(expression)/) { print $0 } }' inputfile.txt > outputfile.txt
答案 2 :(得分: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/#
答案 3 :(得分:0)
如果您处于搜索的开头,y//e<CR>
会将整个匹配的字符串复制到默认寄存器中。请注意,在此操作之后n
会将您带到当前搜索的末尾(因为保存了e
偏移标记),如果您希望n
继续将您带到开始,那么还应该输入//<CR>
(清除所有偏移标志)。所以,整个键序列是
/<pattern><CR>y//e<CR>//<CR>N