如何在文件中搜索模式并从匹配点到文件末尾获取新文件?
我需要获取一个文件并找到第一次出现的文字字符串模式作为文件的完整行:
Acknowledgments:
然后我希望从匹配行一直到文件末尾创建一个新文件。
我希望 Perl 是一个很好的方法来做到这一点,但我不是一个很好的 Perl 人,或者也许 sed 是一个好方法?
请建议一种在 Unix 中可靠地完成此操作的简单方法。
I need to take a file and find the first occurrence of a literal string pattern as a complete line of the file:
Acknowledgments:
And then I wish to create a new file from the line of match all the way to the end of the file.
I expect perl is a good way to do this, but I'm not much of a perl person, alternatively maybe sed is a good way?
Please suggest a simple way to reliably accomplish this in Unix.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是使用 sed 执行此操作的一种方法:
-n
选项禁止将输入打印到输出。/^Acknowledgements:$/,$
部分是一个地址范围规范,表示从与正则表达式^Acknowledgements:$
匹配的行到末尾进行匹配。文件 ($
),然后将这些行打印 (p
) 到输出。如果你希望输入文件和输出文件相同,你还需要指定
-i
选项来告诉sed进行就地编辑。Here's one way to do that using sed:
The
-n
option suppresses the printing of the input to the output. The/^Acknowledgements:$/,$
part is an address range specification that says to match from the line that matches the regular expression^Acknowledgements:$
through the end of the file ($
), and then to print those lines out (p
) to the output.If you want the input file and the output file to be the same, you also need to specify the
-i
option to tell sed to edit in-place.Perl
这是一个应该可以实现您想要的效果的脚本。
下面是等效的 Perl 一行代码:
Perl
Here is a script that should achieve what you're after.
Below is the equivalent Perl one-liner: