I need to concatenate some relatively large text files, and would prefer to do this via the command line. Unfortunately I only have Windows, and cannot install new software.
type file1.txt file2.txt > out.txt
allows me to almost get what I want, but I don't want the 1st line of file2.txt to be included in out.txt.
I have noticed that more
has the +n
option to specify a starting line, but I haven't managed to combine these to get the result I want. I'm aware that this may not be possible in Windows, and I can always edit out.txt by hand to get rid of the line, but is there a simple way of doing it from the command line?
I don't have enough reputation points to comment on the recommendation to use
*.csv >> ConcatenatedFile.csv
, but I can add a warning:If you create
ConcatenatedFile.csv
file in the same directory that you are using for concatenation it will be added to itself.In powershell:
You can also simply try this
It will append the content of file2.txt at the end of file1.txt
If you need original file1.txt, take a backup beforehand. Or you can do this
If you want to have a line break at the end of the first file, you can try the following command before appending.
I would put this in a comment to ghostdog74, except my rep is too low, so here goes.
more +2 file2.txt > temp
This code will actually ignore rows 1 and 2 of the file. OP wants to keep all rows from the first file (to maintain the header row), and then exclude the first row (presumably the same header row) on the second file, so to exclude only the header row OP should use
more +1
.type temp file1.txt > out.txt
It is unclear what order results from this code. Is
temp
appended tofile1.txt
(as desired), or isfile1.txt
appended totemp
(undesired as the header row would be buried in the middle of the resulting file).In addition, these operations take a REALLY LONG TIME with large files (e.g. 300MB)
Here's how to do this: