如何使用 grep 命令打印第一行?

如何使用 grep 命令打印第一行?

我有一个名为file.txt.如何仅使用grep命令打印第一行?

答案1

虽然这是 grep 的一个非常规应用程序,但您可以使用 GNU grep 来完成它

grep -m1 "" file.txt

它之所以有效,是因为空表达式匹配任何内容,而-m1导致 grep 在第一个匹配后退出

-m NUM, --max-count=NUM
       Stop reading a file after NUM matching lines.

答案2

这可不是什么事grep。 “grep”这个名字本身就是“全球搜索正则表达式并打印”,这就是该ed命令的作用g/re/p(对于给定的正则表达式re)。

ed是 1969 年推出的交互式行编辑器,但今天它很可能已安装在您的系统上(它是标准 POSIX 工具)。我们greped, 中得到,它可以被视为 ,ed和的特定功能的快捷方式或别名sed,即“stream- ed”,即(非交互式)流编辑器。

让我们改用sed

sed -n '1p' file.txt

1p字符串是一个微小的sed“脚本”,用于打印 ( p) 与给定地址对应的行(1,第一行)。顺便说一句,编辑命令1p(毫不奇怪)会在编辑器中执行相同的操作。ed

抑制-n脚本未显式打印的任何内容的输出,因此我们得到的只是文件的第一行file.txt

或者:

sed '1q' file.txt

这将打印文件的所有行,但q在第 1 行处退出 ( )(打印后)。这完全等同于head -n 1 file.txt.

在 POSIX 标准中(在head命令的基本原理部分)它说(释义)与head -n N非常相似sed 'Nq',即“打印每一行,但在该行退出N”。之所以head被包含在标准中,是因为tail与现有 Unix 实现的对称性和向后兼容性。

答案3

除非第一行有一个唯一的字符串,否则不能仅使用 grep 来完成此操作。 head -n 1 file.txt将在其位置上工作。

如果您只想打印与模式匹配的第一行,则将 head 通过管道输入 grep

head -n 1 * | grep [pattern]

答案4

这是我用来在 df 输出上获取标头的方法。基本上两个命令按“;”顺序运行。 df -h |头-n1; df -h | grep sda1

相关内容