未知の長さのテキストファイルがある場合、たとえば、すべてのbutファイルの最初の2行を読み取るにはどうすればよいですか? tail
が最後のN行を提供することは知っていますが、Nが何であるかは事前にはわかりません。
だからファイルの
AAAA
BBBB
CCCC
DDDD
EEEE
が欲しいです
CCCC
DDDD
EEEE
そして、ファイルの
AAAA
BBBB
CCCC
私はちょうど得るだろう
CCCC
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番目から)。
テールのバージョンがサポートしていると仮定すると、X行の後にテールの開始を指定できます。あなたの場合、2 + 1を実行します。
tail -n +3
[mdemaria@oblivion ~]$ tail -n +3 stack_overflow.txt
CCCC
DDDD
EEEE
Awkを使用した簡単なソリューション:
awk 'NR > 2 { print }' file.name
sed 1,2d
。必要に応じて2を交換します。
tail -n +linecount filename
はlinecount
のfilename
行で出力を開始するため、tail -n +3 filename
はあなたが望むことをすべきです。
これを使用して、最初のサンプルがsample1.datと呼ばれ、tail --lines=3 sample1.dat
これは、3行目から最終行までのすべての行を印刷します。
2番目のサンプルでは、sample2.datという名前で、tail --lines=-1 sample2.dat
これは最後の行を出力します...
私は本当に尾や頭からそれを行う方法を本当に知りませんが、_wc -l
_(行カウント)とbash式の助けを借りて、あなたはそれを達成することができます。
tail -$(( $( wc -l $FILE | grep -Eo '[0-9]+' ) - 2 )) $FILE
お役に立てれば。