私は読むことができるか、未知の長さのテキストファイル、例えば、すべての与えられたが、ファイルの最初の2行?私が知っているtail
私の最後のN行を与えるだろうが、私はNが事前にあるのか分かりません。
だからファイル
AAAA
BBBB
CCCC
DDDD
EEEE
が欲しいです
CCCC
DDDD
EEEE
そしてファイルのために
AAAA
BBBB
CCCC
私はちょうど得ます
CCCC
私は読むことができるか、未知の長さのテキストファイル、例えば、すべての与えられたが、ファイルの最初の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番目から開始)。
head
ではありませんか?
awkを使用した簡単なソリューション:
awk 'NR > 2 { print }' file.name
{ print }
デフォルトのアクションであり、省略できます。
最初のサンプルがsample1.datと呼ばtail --lines=3 sample1.dat
れ、3行目から最後の行までのすべての行を出力すると仮定して、これを使用します。
2番目のサンプルの場合も、sample2.datと呼ばれtail --lines=-1 sample2.dat
、最後の行を出力します...
tail +3 anyfile
、一般的な場合にtail --lines=N
望ましい結果を与える一方で、望ましい結果を与えるためにNを事前に知っている必要があるということです。
tail
...ボトムアップではないのですか?(BA-DUM TISHありがとう、私はここにすべての週になるだろう...!)
awkを使用して最後の2行を除くすべてを取得する
awk 'FNR==NR{n=FNR}FNR<=n-3{print}' file file
最初の2行を除くすべてを取得するawk
awk 'NR>2' file
または、さらに使用できます
more +2 file
またはただバッシュ
#!/bin/bash
i=0
while read -r line
do
[[ $i > 1 ]] && echo "$line"
((i++))
done <"file"