面白くてシンプルな sed
と tac
解決策:
n=4
tac file.txt | sed "1,$n{d}" | tac
注意
- 二重引用符
"
シェルが$n
を評価するために必要ですsed
の変数 指図。一重引用符では、補間は実行されません。 tac
cat
です 反転、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'