40. 打印模式空间
sed n
命令打印当前模式空间并从输入文件中获取下一行。
这种情况发生在命令执行的中间,因此如果它发生在其他命令中间,它可能会改变正常的流程。
打印每行的模式空间:
$ sed n employee.txt 101,John Doe,CEO 102,Jason Smith,IT Manager 103,Raj Reddy,Sysadmin 104,Anand Ram,Developer 105,Jane Miller,Sales Manager
如果在使用 n
命令时指定 -n
标志,sed 将不会打印任何内容。
$ sed -n n employee.txt
正如我们之前讨论的,正常的 sed 执行流程是读取、执行(所有可用的 sed 命令)、打印、重复。
sed n
命令允许您更改该流程。 sed n
命令将打印当前模式空间,清除当前模式空间,从输入文件读取下一行,然后继续命令流程。
让我们假设您在 n
命令之前有 2 个 sed 命令,在 n
命令之后有 2 个命令,如下所示。
sed-command-1
sed-command-2
n
sed-command-3
sed-command-4
在这种情况下,sed-command-1
和 sed-command-2
将应用于模式空间中的当前行;
当 sed 遇到 n
命令时,它将从模式空间中清除当前行,从输入文件中读取下一行,并将 sed-command-3
和 sed-command-4
应用于 sed 模式空间中新读取的行。
n
命令本身相对无用。 然而,当与下一节 hack 中讨论的
hold
模式命令结合使用时,它的功能非常强大。