面白くてシンプルな sed と tac 解決策:
n=4
tac file.txt | sed "1,$n{d}" | tac
注意
- 二重引用符
"シェルが$nを評価するために必要ですsedの変数 指図。一重引用符では、補間は実行されません。 taccatです 反転、man 1 tacを参照{}sedで$nを区切るためにありますか &d(そうでない場合、シェルは存在しない$ndを補間しようとします 変数)
sed ワンライナーから:
# delete the last 10 lines of a file
sed -e :a -e '$d;N;2,10ba' -e 'P;D' # method 1
sed -n -e :a -e '1,10!{P;N;D;};N;ba' # method 2
sed についてはわかりません 、しかしそれは head で行うことができます :
head -n -2 myfile.txt
n のハードコーディングがオプションの場合、sed への順次呼び出しを使用できます。たとえば、最後の 3 行を削除するには、最後の 1 行を 3 回削除します。
sed '$d' file | sed '$d' | sed '$d'