これは私が使用しているファイルの出力です。
aaaaa
bbbbb
ccccc
ddddd
eeeee
fffff
ggggg
hhhhh
iiiii
jjjjj
私は以下を使用すると、tail -n 5 filename
次のように表示されることを知っています。
fffff
ggggg
hhhhh
iiiii
jjjjj
head
このようにコマンドを使用してどのように同じように表示できますか?精密ワイヤーか。
head -n 10 filename | tail -n 5 filename
うまくいきますが、私が探しているものとは重複しています。
答え1
注文
head -n 10 filename | tail -n 5 filename
無意味。出力は から直接読み取ったので読み取れhead
ません。したがって、結果は今の結果とまったく同じです。tail
tail
filename
tail -n 5 filename
このhead
ユーティリティはトップファイルの内容(またはGNUの場合は、ファイルのhead
末尾の特定の行数を除くファイルのすべての行)。head
ファイルデータの尾を取得するためにこのユーティリティを使用したくありません。これを行うには、tail
示されているとおりに使用します。
他のソリューションは基本ソリューションよりも複雑ですtail -n 5
。
たとえば、
tac filename | head -n 5 | tac
GNU coreutilsがすでにインストールされているとしますtac
。どちらもリモートPOSIX準拠のシェル環境を持つすべてのシステムにインストールされ、head
LinuxシステムとGNU coreutilsがインストールされている他のシステムでのみ見つけることができます。tail
tac
あるいは、単に使用したくない場合は、自分で実装することもできますtail
。awk
tail
$ awk -vn=5 '{ lines[i++ % n] = $0 } END { for (j = 0; j < n; ++j) print lines[(i+j)%n] }' filename
fffff
ggggg
hhhhh
iiiii
jjjjj
答え2
私の考えでは、これがあなたが望むものです。
foo@bar~$猫ファイル ああああ bbbb cccc ディディディディ に に に パフパフ クッキー ははは 三十三 笑
head
以前と同じ行を印刷するために使用しようとしていますtail
。
foo@bar~$ tail -n 5ファイル パフパフ クッキー ははは 三十三 笑
解決策
foo@bar~$ sort -r ファイル|ヘッダー-5|種類 パフパフ クッキー ははは 三十三 笑
答え3
この実装では、ファイルの最後の5行だけを表示するhead
ためにWithoutを使用します。tail
head -n -0 filename | sed 1,$(echo "$(wc -l filename | awk '{ print $1 }')-5" | bc -l)d
head -n -0 filename - ファイルのすべての行を表示します。
~からman head:
-n, --lines=[-]N "-"で始まる最初の10行ではなく、最初のN行を印刷し、各ファイルの最後のN行を除くすべての行を印刷します。
$(echo "$(wc -l filename | awk '{ print $1 }')-5" | bc -l) -- ファイルの総行数から 5 を引いた値に基づいて削除する行数を計算します。
sed 1、(NUMBER_OF_LINES_TO_DELETE)d - 前の計算に基づいて最後の5行を除くすべての行を削除します。
答え4
head
1位を占めるためだNファイルの行。tail
最後のものを手に入れようNファイルの行。もっと一般的なものが必要な場合は確認してください。このスレッド。