Try:
split -l 5 --additional-suffix=.txt abc.txt abc
Or, if you want numbers in place of letters:
split -l 5 -d --additional-suffix=.txt abc.txt abc
The abc that we added after the file names serves as the prefix.
Because you wanted .txt as a suffix, we added the option --additional-suffix=.txt.
The optional -d tells split to use numbers instead of letters.
Example
Let's start with a directory with one file:
$ ls
abc.txt
Now, let's split that file:
$ split -l 5 -d --additional-suffix=.txt abc.txt abc
$ ls
abc00.txt abc01.txt abc02.txt abc03.txt abc.txt
Work-around 1: using shell
Current versions of GNU split support the --additional-suffix option and split is part of GNU coreutils. That means that this option will be eventually be available on all linux systems.
For systems that currently lack it, one work around is to rename the files after split creates them. For example:
$ split -l 5 -d abc.txt abc
$ for f in ./abc??; do mv "$f" "$f.txt"; done
$ ls
abc00.txt abc01.txt abc02.txt abc03.txt abc.txt
The above assumes that the default suffix length of 2 applies. If not, change the number of ? to match the suffix length that you are using. For example, if you are using a suffix length of 5:
$ split -l 5 -a 5 -d abc.txt abc
$ for f in ./abc?????; do mv "$f" "$f.txt"; done
$ ls
abc00000.txt abc00001.txt abc00002.txt abc00003.txt abc.txt
Work-around 2: using awk
Here, the option l specifies the number of lines to include in each splitted file and d specifies the number of digits to use in the splitted files name. Make sure that d is large enough.
$ awk -v l=5 -v d=2 '{n="0000" int((NR-1)/l); f="abc" substr(n,length(n)+1-d) ".txt"; if (f!=old) close(old); old=f; print >f}' abc.txt
$ ls
abc00.txt abc01.txt abc02.txt abc03.txt abc.txt