Soldier punched by a filthy general (9)
I believe the answer is:
garibaldi
'general' is the definition.
(Giuseppe Garibaldi)
'soldier punched by a filthy' is the wordplay.
'soldier' becomes 'GI' (GI can mean a US soldier).
'punched by' means one lot of letters goes inside another (some letters punch a hole in others).
'filthy' becomes 'ribald' (I am not sure about this - if you are sure you should believe this answer much more).
'a'+'ribald'='aribald'
'gi' going around 'aribald' is 'GARIBALDI'.
Can you help me to learn more?
(Other definitions for garibaldi that I've seen before include "Currant sandwich biscuit" , "Revolutionary leader" , "girl's blouse!" , "Biscuit with currants" , "leader of nationalists" .)