0

私はAWKを使用するのはかなり新しいです。FNR変数を発見しただけです。ファイルを処理するに総レコード数を取得できるかどうか疑問に思っていますか? したがって、FNRファイルの最後にあります。

私はそのようなことをするためにそれが必要です

awk 'FNR<TOTALRECORDS-4 {print}'

ファイルの最後の 4 行を削除するため。ありがとう

4

2 に答える 2

1

ファイルの最後の 4 行を除くすべてを印刷するだけの場合は、別のツールを使用してください。ただし、awk で他の処理を行っていて、これを組み込む必要がある場合は、行をバッファーに格納し、必要に応じて出力するだけです。つまり、最新の 4 行を保存し、改行を取得したときにバッファー内の最後の行を出力します。例えば:

awk 'NR>4 { print a[i%4]} {a[i++%4]=$0}' input

これにより、配列に 4 行が保持されaます。ファイルの最初の 4 行にいる場合は、その行を に保存するだけですa。4 行を超える行にいる場合、最初に行うことは、行を 4 行後ろに出力することです ( aindex に格納されます) 。必要に応じて、これら 2 つのアクション ステートメントの間i%4を操作するコマンドを配置できます。$0

于 2012-10-04T17:31:00.920 に答える
1

ファイルから最後の 4 行を削除するには、次のようにしますhead

head -n -4 somefile > outputfile
于 2012-10-04T14:14:05.777 に答える