Numbering lines in specific field - sed/awk

I need to number a specific field in a file, but I didn't find anything about

ex:

file

#<!---ARQ ID:--->
#Lorem ipsum dolor sit amet, consectetur adipiscing elit
#<!---ARQ ID:--->
#laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor 
#<!---ARQ ID:--->
#nisi ut aliquid ex ea commodi consequatur? Quis autem vel 

result

#<!---ARQ ID:3--->
#Lorem ipsum dolor sit amet, consectetur adipiscing elit
#<!---ARQ ID:2--->
l#aboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor 
#<!---ARQ ID:1--->
#nisi ut aliquid ex ea commodi consequatur? Quis autem vel 

I need enumerate after colon in reverse order

sed 's/^<!---ID./&numeringreverse???/' x 

note: ignore "#" in exemple

@Pinguino, could you please try following,with reading Input_file 2 times here to make things easier.

awk '
FNR==NR{
  if($0~/ID:/){ count++ }
  next
}
match($0,/ID:/){
  $0=substr($0,1,RSTART-1) substr($0,RSTART,RLENGTH) count-- substr($0,RSTART+RLENGTH)
}
1
'  Input_file  Input_file

Thanks,
R. Singh

Hi
Use such a pipe

tac file | awk 'BEGIN {OFS=FS=":"} /^#<!---/ {$2 = ++count $2}1' | tac
2 Likes

You can also try this one liner-

tac test.dat | awk '{if($0 ~ /<!---/) print substr($0,1,index($0,":"))NR/2substr($0,index($0,":")+1); else     print $0;}' | tac


:~$ tac test.dat | awk '{if($0 ~ /<!---/) print substr($0,1,index($0,":"))NR/2substr($0,index($0,":")+1); else print $0;}' | tac
<!---ARQ ID:3--->
Lorem ipsum dolor sit amet, consectetur adipiscing elit
<!---ARQ ID:2--->
laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
<!---ARQ ID:1--->
nisi ut aliquid ex ea commodi consequatur? Quis autem vel
2 Likes

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.