我的文件如下
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}
但它不是写在文件的末尾,如何计算和添加结果。
答案 0 :(得分: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
答案 1 :(得分:1)
您不需要使用显式计数器。您可以使用内置的NR(记录数)变量。例如:
awk 'END { print NR-1 }' /path/to/file
答案 2 :(得分:0)
你真的不需要awk
。你实际上可以使用coreutils和一些嵌套来做到这一点。您还可以避免使用临时文件。尝试:
echo "T|$(( $(wc -l < file) - 1 ))" >> file