回答:
つかいます sed
使用法
$ cat file
Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10
1行を印刷するには(5)
$ sed -n 5p file
Line 5
複数の行を印刷するには(5および8)
$ sed -n -e 5p -e 8p file
Line 5
Line 8
特定の範囲(5〜8)を印刷するには
$ sed -n 5,8p file
Line 5
Line 6
Line 7
Line 8
他の特定の行で範囲を印刷するには(5-8および10)
$ sed -n -e 5,8p -e 10p file
Line 5
Line 6
Line 7
Line 8
Line 10
目標に応じて、headまたはgrepが好きです
cat /var/log/syslog -n | head -n 50 | tail -n 10
41行目から50行目を返します。
または
cat /var/log/syslog -n | grep " 50" -b10 -a10
行40〜60が表示されます。grepメソッドの問題は、行番号のパディングにアカウントを使用する必要があることです(スペースに注意してください)。
どちらもログファイルの解析に非常に便利です。
cat
ただし、どちらの例も必要ありません
cat
OPが望むことを実行できない
他の人が示したように、を使用する必要はありませんcat -n
。他のプログラムがあなたのためにそれをします。ただし、cat -n
特定の行(4〜8、12、42など)の出力を解析して表示するだけの場合は、次のようにします。
$ cat -n file | awk '$1>=4 && $1<=8 || $1==12 || $1==42'
4 Line 4
5 Line 5
6 Line 6
7 Line 7
8 Line 8
12 Line 12
42 Line 42
ではawk
、$1
最初のフィールドです。したがって、このコマンドは、最初のフィールドがi)4〜8(両端を含む)またはii)12またはiii)42であるすべての行を出力します。
cat -n
ファイルから元の行を取得するために追加されたフィールドも削除する場合は、次の操作を実行できます。
$ cat -n file | awk '$1>=4 && $1<=8 || $1==12 || $1==42{sub(/^\s*[0-9]+\s*/,""); print}'
Line 4
Line 5
Line 6
Line 7
Line 8
Line 12
Line 42