指定された行から始まるテキストの表示

指定された行から始まるテキストの表示

確認したい/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(下図のように省略可能)。

関連情報