【发布时间】:2013-09-27 22:21:44
【问题描述】:
假设有一个包含一些文本的文件,并说我们正在该文本中寻找某个字符串。在该字符串的第一个实例之前,您将如何打印该文件的内容?
【问题讨论】:
假设有一个包含一些文本的文件,并说我们正在该文本中寻找某个字符串。在该字符串的第一个实例之前,您将如何打印该文件的内容?
【问题讨论】:
sed '/\(pattern\).*/{s//\1/; q;}'
【讨论】:
将 sed 与 q 命令一起使用:
sed '/pattern/q' file
这将打印文件直到找到pattern,然后它将退出其余的处理。
【讨论】:
有很多方法可以做到这一点。例如,您可以使用 grep 的 -n 选项使其输出行号,提取第一个行号并使用它来指示 head 从文件中显示给定数量的行:
head -n $(grep -n somestring file | cut -d: -f1 | head -n 1) file
【讨论】:
使用awk
awk '!f; /pattern/ {f=1}' file
如果f=0,如果pattern找到集合f=1,则打印行
【讨论】:
awk '1; /pattern/{exit}' file 而不是那个命令。恕我直言,它更简单、更清晰,而且效率更高。
awk '/search/{exit}1' file