Linux tail 命令包含的行多于预期

Linux tail command includes more lines than intended

所以我想稍微了解一下 Linux 脚本编写,并从书中的一个简单示例开始。在这本书中,作者要我从snort.conf.

中抓取"Step #6: Configure output plugins"之前的五行

类似于作者,我确定了我想要的线在哪里,returns 445 对我来说。如果我然后使用 tail 结果 returns 比我预期更多的文本,并且应该在第 5 行的搜索行在第 88 行。我不明白我如何使用 tail 命令并从特定行开始但是然后包含更多文字。

搜索我用过的线路

nl /etc/snort/snort.conf | grep output.

获取包含搜索行之前的 5 行:

tail -n+440 /etc/snort/snort.conf | head -n+6 

tail 语句似乎是问题所在。对于我的回答为何不起作用的任何帮助,我们将不胜感激!

你的tail命令原则上是正确的。

问题在于您使用nl获取行号的方式。默认情况下,nl 命令不计算空行,而 tail 命令计算空行。您应该在 nl 命令中指定您也想计算空行,您可以使用 -b, (body-numbering) 选项并指定 a 作为您的样式.这看起来如下:

nl -ba /etc/snort/snort.conf | grep output.

来自nl --help

Usage: nl [OPTION]... [FILE]...
Write each FILE to standard output, with line numbers added.

With no FILE, or when FILE is -, read standard input.

Mandatory arguments to long options are mandatory for short options too.
  -b, --body-numbering=STYLE      use STYLE for numbering body lines

[...]

By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn.  CC are
two delimiter characters for separating logical pages, a missing
second character implies :.  Type \ for \.  STYLE is one of:

  a         number all lines
  t         number only nonempty lines

为所有行编号并在 tail 中使用该行号。

你好,我正在尝试使用你正在使用的同一本书,但我没有找到任何关于 tail 或 nl 的好解决方案,但我想出了简单的 grep 开关 -B 和 -A 在 grep 开关之前和之后。

我通过输入

解决了这个问题

grep -B 5 “第六步:配置输出插件” /etc/snort/snort.conf

在那之后你将在该行之前得到 5 行,与 After -A 相同。

希望这会帮助人们保持安全快乐的学习