显示从指定行开始的文本

显示从指定行开始的文本

我想检查一下/etc/passwd

    $ cat -n /etc/passwd
         1  ##
         2  # User Database
         3  # 
         4  # Note that this file is consulted directly only when the system is running
         5  # in single-user mode.  At other times this information is provided by
         6  # Open Directory.
         7  #
         8  # See the opendirectoryd(8) man page for additional information about
         9  # Open Directory.
        10  ##
        11  nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false

正如我们所看到的,前 10 行被注释了,结果我想要一些命令,比如

    $ cat -n [11:] /etc/passwd
     nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false     
     root:*:0:0:System Administrator:/var/root:/bin/sh
     daemon:*:1:1:System Services:/var/root:/usr/bin/false
     _uucp:*:4:4:Unix to Unix Copy Protocol:/var/spool/uucp:/usr/sbin/uucico

如何实现呢?

答案1

如果您想忽略文件中任何位置的注释行,而不必计算它们,那么应该这样做:

grep -n -v ^# /etc/passwd

grep 的选项-n与 cat 相同,对行进行编号(尽管输出格式略有不同,grep 在行号和内容之间添加冒号,并且也不填充数字。)

-v选项告诉 grep 打印执行的行不是匹配正则表达式。

并且正则表达式仅匹配行开头的^#文字。#

相反,如果您想要的是始终跳过前 10 行,那么tail +11应该这样做。您可以通过管道连接cat -n到它:

cat -n /etc/passwd | tail +11

有关更多详细信息,请参阅 的手册页tail,更具体地说是选项-n(可以省略,如下所示。)

相关内容