0

ファイルは次のとおりです。

line1
line2
⋮
line10
Total
Update time

最後の 2 行を除いて、ファイルの最初の部分が必要です。

出力は次のようになります。

line1
line2
⋮
line10

BSDヘッドを使用してこれを達成するにはどうすればよいですか? または他のワンライナー?

ありがとう!

4

7 に答える 7

2

別の awk オプション:

cat <<file>> | awk -v len=$(wc -l <<file>> | awk '{print $1}') 'NR < len - 2 { print $0 }'
于 2013-09-21T19:55:26.547 に答える
2

ファイルを反転し、最初の2 行を削除してから、元に戻します。

tac file | sed 1,2d | tac
于 2013-09-21T21:23:05.767 に答える
2

awk を使用すると、最後の 2 行を除くすべての行が出力されます。

  awk '{a[j++]=$0}END{for(i=0;i<j-2;i++){print a[i]}}' filename
于 2013-09-21T19:43:30.013 に答える
1

何かのようなもの

head file.txt -n -2

headバージョンで -2 引数が許可されていれば、動作するはずです。GNUの頭の私のバージョンは動作します

$ head --バージョン
ヘッド (GNU coreutils) 5.97
Copyright (C) 2006 Free Software Foundation, Inc.
これはフリーソフトウェアです。の条件の下で、そのコピーを再配布することができます。
GNU 一般公衆利用許諾契約書。
法律で許可されている範囲で、保証はありません。

デビッド・マッケンジーとジム・マイヤーリングによって書かれました。
于 2013-09-21T19:24:58.710 に答える
0

これにより、最後の2を除くファイルが取得されます

ファイル.txt | head -$(expr $(wc -l file.txt | cut -c-8) - 2 )

太字部分を修正用に変更。

于 2013-09-21T19:45:02.583 に答える