2

以下のようなファイルがあります

H|ACCT|EXEC|1|TEMP|20130215035845|
849002|48|1208004|1
849007|28|1208004|1
855003|48|1208004|1
855004|28|1208004|1
855006|28|1208004|1
855008|28|1208004|1
855011|28|1208004|1

レコード数 -1 を追加したい (最初のレコードはホール レコードの一部ではないため) 以下のように出力する必要がある

H|ACCT|XEC|1|TEMP|20130215035845|
849002|48|1208004|1
849007|28|1208004|1
855003|48|1208004|1
855004|28|1208004|1
855006|28|1208004|1
855008|28|1208004|1
855011|28|1208004|1
T|7

以下のオプションを試してみawk 'NF != 0 {++count} END {print count} ましたが、ファイルの最後に、結果を計算して追加する方法が書かれていません。

4

3 に答える 3

2

この行を試してください:

awk '1;END{print "T|"NR-1}' file

あなたの例で:

kent$  echo "H|ACCT|EXEC|1|TEMP|20130215035845|
849002|48|1208004|1
849007|28|1208004|1
855003|48|1208004|1
855004|28|1208004|1
855006|28|1208004|1
855008|28|1208004|1
855011|28|1208004|1"| awk '1;END{print "T|"NR-1}'
H|ACCT|EXEC|1|TEMP|20130215035845|
849002|48|1208004|1
849007|28|1208004|1
855003|48|1208004|1
855004|28|1208004|1
855006|28|1208004|1
855008|28|1208004|1
855011|28|1208004|1
T|7
于 2013-02-16T19:37:21.820 に答える
1

組み込みのNR変数を使用する

明示的なカウンターを使用する必要はありません。組み込みのNR(レコード数)変数を使用できます。例えば:

awk 'END { print NR-1 }' /path/to/file
于 2013-02-16T19:27:49.680 に答える
0

本当に必要ありませんawk。実際には、coreutils といくつかのネストを使用してこれを行うことができます。また、一時ファイルが不要になります。試す:

echo "T|$(( $(wc -l < file) - 1 ))" >> file
于 2013-02-17T08:34:16.457 に答える