ファイルは次のとおりです。
line1
line2
⋮
line10
Total
Update time
最後の 2 行を除いて、ファイルの最初の部分が必要です。
出力は次のようになります。
line1
line2
⋮
line10
BSDヘッドを使用してこれを達成するにはどうすればよいですか? または他のワンライナー?
ありがとう!
別の awk オプション:
cat <<file>> | awk -v len=$(wc -l <<file>> | awk '{print $1}') 'NR < len - 2 { print $0 }'
ファイルを反転し、最初の2 行を削除してから、元に戻します。
tac file | sed 1,2d | tac
awk を使用すると、最後の 2 行を除くすべての行が出力されます。
awk '{a[j++]=$0}END{for(i=0;i<j-2;i++){print a[i]}}' filename
何かのようなもの
head file.txt -n -2
head
バージョンで -2 引数が許可されていれば、動作するはずです。GNUの頭の私のバージョンは動作します
$ head --バージョン ヘッド (GNU coreutils) 5.97 Copyright (C) 2006 Free Software Foundation, Inc. これはフリーソフトウェアです。の条件の下で、そのコピーを再配布することができます。 GNU 一般公衆利用許諾契約書。 法律で許可されている範囲で、保証はありません。 デビッド・マッケンジーとジム・マイヤーリングによって書かれました。
これにより、最後の2行を除くファイルが取得されます
猫ファイル.txt | head -$(expr $(wc -l file.txt | cut -c-8) - 2 )
太字部分を修正用に変更。