This is a programming forum so you're bound to get programming-type answers.
I think it's unlikely someone will have written software just to do this. If they have then it'll be part of a suite of functions, so one way or another you're going to have to specify exactly what you want the computer to do.

And that my friend is a program.

So the only question left is what language you want to learn. BASIC is a good one for beginners; many people started with that (myself included, ZX81 BASIC), it's often used by non-programmers who think they can program. There are loads of variants of BASIC, free and paid.
Or you can use something like Perl as oogabooga suggested, or you could learn C which will do what you want very easily and very quickly, and being industry standard C will be a very marketable skill, even if you don't have much of it.
Unix command line utilities (see GnuWin32 if you're on Windows) can also do this kind of stuff; have a look at swk and sed. The languages are a bit on the cryptic side but I think both of these would be capable.

Here's a quick C program to do two parts of what you want:
Code:
	FILE *fp;
	int i;
	fopen_s(&fp,"names.txt","r");
	if (fp)
	{
		char buf[64];
		for(;;)
		{
			// read a name in from the file
			fgets(buf,60,fp);
			if (feof(fp))
				break;

			// clean up any terminating whitespace
			for (i=0; buf[i]; i++) ;
			for (i--; isspace(buf[i]); buf[i--]=0) ;

			// loop, printing the name and a number
			for (i=0; i<3; i++)
			{
				printf("%s%d\n",buf,i);
			}
			// print the name and an embedded string
			printf("%c%cHELLO%s\n",buf[0],buf[1],buf+2);
		}
		fclose(fp);
	}
Output:
john0
john1
john2
joHELLOhn
tom0
tom1
tom2
toHELLOm
pete0
pete1
pete2
peHELLOte