Count Pattern using awk

I need to get a count of all the records that start with 4 and then print the value.

I have the below statement but it is missing something, can someone help me to fix this

awk 'BEGIN{~/^4/{C++}};END {print"<Total>"} {print"<Reg>"}{print "<value>"C"</value></Reg>"}' {print"</Total>"} temp > test.txt

I'm afraid your sample code is entirely screwed up. Try (untested) (sample data would have been nice!):

awk '
/^4/   {C++}
       {print "<Reg><value>" C "</value></Reg>"}
END    {print "<Total>" C "</Total>"}
' temp

Other guesses:

awk 'BEGIN{ print "<Total>" }/^4/ {C++; print "<Reg><value>"C"</value></Reg>"}; END {print "</Total>"}' temp

Output

<Total>
<Reg><value>1</value></Reg>
<Reg><value>2</value></Reg>
<Reg><value>3</value></Reg>
<Reg><value>4</value></Reg>
<Reg><value>5</value></Reg>
</Total>
awk 'BEGIN{ print "<Total>" } /^4/{C++} END{ print "  <Reg>\n    <value>"C"</value>\n  </Reg>\n</Total>"}' temp

Output:

<Total>
  <Reg>
    <value>5</value>
  </Reg>
</Total>