出荷書類ビーチPOSIXテールオプションは-n
以下を示します。
計算の原点は1です。つまり、-n+1 はファイルの最初の行を表し、-n -1 は最後の行を表します。
したがってtail -n 10
、後で同じページで使用されるtail -n -10
最後の10行を印刷し、tail -n +10
最初の9行をスキップして残りの行をすべて印刷する必要があります。
出荷書類ビーチPOSIXヘッダオプションは-n
以下を示します。
アプリケーションでは、数値オプション引数が正の10進整数であることを確認する必要があります。
したがって、sumの値は単純な整数ではなく、シェルで特別な意味のない文字列であり、最後のN行目まですべての行を印刷できないhead -n -10
ため、sumはPOSIXと互換性がありません。head -n +10
なぜ違いがありますか?-10
+10
PS:head -n +10
GNU coreutilsで使用されます。
答え1
探している機能を実装する価値があると思う人は誰もいないので、これを要求する構文はありません。
どのように実装するべきか考えてみましょう。まず、ファイルの終わりを見つけて後ろにスキャンして、最後からN番目の行が始まる場所を見つけてその場所を記録し、最初に戻って目的の位置に達するまで行を印刷する必要があります。覚えているこれは通常よりも複雑ですhead
。 (またはファイル全体をメモリに読み込んで最後のN行を削除し、残りの行を印刷することもできます)。
一方、tail
の機能は実装するのが非常に簡単です。 N個以上の行を保存する必要はありません(この-n -N
場合)。この-n +N
場合、印刷を開始する前にスキップする回数を数えるだけです。