web-dev-qa-db-ja.com

頭の反対は何ですか?ファイルの最初のN行を除くすべてが必要です

未知の長さのテキストファイルがある場合、たとえば、すべてのbutファイルの最初の2行を読み取るにはどうすればよいですか? tailが最後のN行を提供することは知っていますが、Nが何であるかは事前にはわかりません。

だからファイルの

AAAA
BBBB
CCCC
DDDD
EEEE

が欲しいです

CCCC
DDDD
EEEE

そして、ファイルの

AAAA
BBBB
CCCC

私はちょうど得るだろう

CCCC
125

tail --helpは以下を提供します。

  -n, --lines=K            output the last K lines, instead of the last 10;
                           or use -n +K to output lines starting with the Kth

したがって、最初の2行、-n +3は、探している出力を提供する必要があります(3番目から)。

184
Joe Enos

テールのバージョンがサポートしていると仮定すると、X行の後にテールの開始を指定できます。あなたの場合、2 + 1を実行します。

tail -n +3

[mdemaria@oblivion ~]$ tail -n +3 stack_overflow.txt
CCCC
DDDD
EEEE
18
Mike DeMaria

Awkを使用した簡単なソリューション:

awk 'NR > 2 { print }' file.name
12
janm

sed 1,2d。必要に応じて2を交換します。

7
lhf

tail -n +linecount filenamelinecountfilename行で出力を開始するため、tail -n +3 filenameはあなたが望むことをすべきです。

5
Jim Lewis

これを使用して、最初のサンプルがsample1.datと呼ばれ、tail --lines=3 sample1.datこれは、3行目から最終行までのすべての行を印刷します。

2番目のサンプルでは、​​sample2.datという名前で、tail --lines=-1 sample2.datこれは最後の行を出力します...

0
t0mm13b

私は本当に尾や頭からそれを行う方法を本当に知りませんが、_wc -l_(行カウント)とbash式の助けを借りて、あなたはそれを達成することができます。

tail -$(( $( wc -l $FILE | grep -Eo '[0-9]+' ) - 2 )) $FILE

お役に立てれば。

0
NawaMan