如何提取已经与多行模式匹配的文本?

发布于 2024-10-21 02:13:29 字数 76 浏览 2 评论 0原文

全部 使用 vim 元字符 \_。或 awk,我已经匹配了多行,但我不知道如何将它们拉入或提取到其他文件中。有通用的方法可以做到这一点吗?

all
using vim meta-character \_. or awk, I have matched the multiple lines, but I don't know how to yank or extract them into other files.Is there a general way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

醉城メ夜风 2024-10-28 02:13:29

这个答案适用于 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

This answer is applying to Vim, not Awk.

I can suggest:

function CopyPatternToRegisterZ(pat)
  let @z .= a:pat
  return a:pat
endfunction

And then:

:let @z = ''
:%s/your_pattern/\= CopyPatternToRegisterZ(submatch(0)) /g

Then you can use "zp to paste your matches to another file.

See :help sub-replace-expression for details on this syntax.

我们只是彼此的过ke 2024-10-28 02:13:29

在 awk 中使用 print 然后将输出重定向到其他文件。

awk 'BEGIN {FS =" "};  { if ($0 ~ /(expression)/) { print $0 } }' inputfile.txt > outputfile.txt

use print in awk then redirect output to other file .

awk 'BEGIN {FS =" "};  { if ($0 ~ /(expression)/) { print $0 } }' inputfile.txt > outputfile.txt
复古式 2024-10-28 02:13:29

仅将模式复制到另一个文件

"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/#

Only to copy pattern to another file

"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/#
我的黑色迷你裙 2024-10-28 02:13:29

如果您在搜索开始,y//e 会将整个匹配字符串复制到默认寄存器中。请注意,在此操作之后,如果您想要 nn 会将您带到当前搜索的末尾(因为保存了 e 偏移标志)要继续带您回到开头,您还应该输入 // (这会清除所有偏移标志)。所以,整个按键顺序是

/<pattern><CR>y//e<CR>//<CR>N

If you are at the start of the search, y//e<CR> will copy the whole matched string into default register. Note that after this action n will bring you to the end of the current search (because e offset flag is saved), if you want n to continue bringing you to the start, you should additionally type //<CR> (that clears all offset flags). So, the whole key sequence is

/<pattern><CR>y//e<CR>//<CR>N
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文