繰越注文? [コピー]

繰越注文? [コピー]

デフォルトでは、コマンドまたはテキストブロックを次にパイプします。 (tail -n 3例:)印刷ただ最後の3行到着するstdout。この反対を行う同等または類似の方法はありますか?したがって、この例では印刷みんな しかし、最後の3行到着するstdout

答え1

@don_crisstiのコメントに基づいてこの内容が役立つ場合は、彼のコメントに親指を押してください。

a次の内容を含むファイルがある場合:

1
2
3
4
5
6
7
8
9
10

全部持って欲しいしかし最後の3行はhead -n -3これを実行して次のように生成できます。

# head -n -3 a
1
2
3
4
5
6
7

答え2

1つのアプローチは次のとおりです(非常にエレガントではありませんが、テスト済みです)。

a=$(wc -l <file.txt);a=$((a-3));sed ''$a'q;' file.txt

wc -l はファイルの行数を返します。これで行番号が a に割り当てられます。

最後の3行を除くすべての行が必要なので、aを減らしてからsedを使用してファイルのath行まで印刷します。

関連情報