Esto es para cambiar sólo la última fecha de cada línea, como querías:
Código:
perl -pe 's/ (\d+)(:\d+:\d+) (A|P)M$/sprintf(" %d$2",($3 eq "P")?$1+12:$1)/e;' archivo.txt
En caso de que quieras cambiar las dos fechas de cada línea:
Código:
perl -pe 's/ (\d+)(:\d+:\d+) (A|P)M/sprintf(" %d$2",($3 eq "P")?$1+12:$1)/ge;' archivo.txt
Y en el caso de que además quieras poner los números de las horas con dos dígitos:
Código:
perl -pe 's/ (\d+)(:\d+:\d+) (A|P)M/sprintf(" %02d$2",($3 eq "P")?$1+12:$1)/ge;' archivo.txt