デフォルトでは、コマンドまたはテキストブロックを次にパイプします。 (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行まで印刷します。