Exibe o texto começando em uma linha especificada [duplicada]

0

Gostaria de verificar /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

Como vemos, as primeiras 10 linhas são comentadas, o resultado eu desejo algum comando como

    $ 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

Como fazer isso?

    
por JawSaw 29.03.2018 / 04:25

1 resposta

1

Se você quiser ignorar as linhas comentadas, em qualquer lugar do arquivo, sem precisar contá-las, isso deve ser feito:

grep -n -v ^# /etc/passwd

A opção -n para o grep faz o mesmo que para cat, numera as linhas (embora o formato de saída seja ligeiramente diferente, o grep adiciona um ponto-e-vírgula entre o número da linha e o conteúdo e também não preenche os números).

A opção -v diz ao grep para imprimir as linhas que não correspondem à expressão regular.

E a expressão regular ^# corresponde a um literal # apenas no início da linha.

Se o que você queria, em vez disso, era pular sempre as 10 primeiras linhas, então tail +11 deveria fazer isso. Você pode canalizar cat -n para ele:

cat -n /etc/passwd | tail +11

Veja a página do manual de tail para mais detalhes, mais especificamente a opção -n (que pode ser omitida, como aqui).

    
por 29.03.2018 / 04:33

Tags