Мне нужно объединить несколько относительно больших текстовых файлов, и я бы предпочел сделать это через командную строку. К сожалению, у меня только Windows, и я не могу устанавливать новое программное обеспечение.
type file1.txt file2.txt > out.txt
позволяет мне почти получить то, что я хочу, но я не хочу, чтобы первая строка файла file2.txt была включена в out.txt.
Я заметил, что more
есть +n
возможность указать начальную линию, но мне не удалось объединить их, чтобы получить желаемый результат. Я знаю, что это может быть невозможно в Windows, и я всегда могу отредактировать out.txt вручную, чтобы избавиться от строки, но есть ли простой способ сделать это из командной строки?
windows
command-line
concatenation
Джеймс
источник
источник
copy
выполняется намного быстрее, но в конце помещается символ SUB. Есть ли способ избежать этого?copy /b *.txt combined.txt
без необходимости перечислять файлы по отдельности.type file1.txt temp > out.txt
добавление второго файла без заголовка к первомуЯ использую это, и он мне подходит:
TYPE \\Server\Share\Folder\*.csv >> C:\Folder\ConcatenatedFile.csv
Конечно, перед каждой пробежкой нужно
DELETE C:\Folder\ConcatenatedFile.csv
Единственная проблема в том, что если у всех файлов есть заголовки, то он будет повторяться во всех файлах.
источник
У меня недостаточно очков репутации, чтобы прокомментировать рекомендацию по использованию
*.csv >> ConcatenatedFile.csv
, но я могу добавить предупреждение:Если вы создадите
ConcatenatedFile.csv
файл в том же каталоге, который используете для конкатенации, он будет добавлен к самому себе.источник
Используйте команду FOR, чтобы отображать файл построчно, и с опцией пропустить, чтобы пропустить несколько начальных строк ...
Вы можете перенаправить вывод командного файла, содержащего что-то вроде ...
Обратите внимание на двойной%, когда переменная FOR используется в пакетном файле.
источник
Вот как это сделать:
источник
Я бы добавил это в комментарий к ghostdog74, за исключением того, что моя репутация слишком мала, так что приступим.
more +2 file2.txt > temp
Этот код фактически игнорирует строки 1 и 2 файла. OP хочет сохранить все строки из первого файла (для поддержания строки заголовка), а затем исключить первую строку (предположительно, ту же строку заголовка) во втором файле, чтобы исключить только строку заголовка, которую OP должен использовать
more +1
.type temp file1.txt > out.txt
Неясно, какой порядок следует из этого кода. Является
temp
прилагаются кfile1.txt
(по желанию), илиfile1.txt
добавляются кtemp
(нежелательно как строка заголовка будет похоронена в середине результирующего файла).Кроме того, эти операции занимают ДЕЙСТВИТЕЛЬНО ДЛИТЕЛЬНОЕ ВРЕМЯ с большими файлами (например, 300 МБ).
источник
Я знаю, что вы сказали, что не можете устанавливать какое-либо программное обеспечение, но я не уверен, насколько жестко это ограничение. В любом случае, у меня была такая же проблема (попытка объединить два файла с предположительно одинаковыми заголовками), и я подумал, что предоставлю альтернативный ответ для других, которые попадают на эту страницу, так как это отлично сработало для меня.
Попробовав целую кучу команд в Windows и сильно разочаровавшись, а также попробовав всевозможные графические редакторы, которые обещали иметь возможность открывать большие файлы, но не могли, я наконец вернулся к своим корням Linux и открыл свой Cygwin. Подсказка. Две команды:
Для
file1.csv
800 МБ и 400file2.csv
МБ эти две команды на моей машине заняли менее 5 секунд. Не меньше, чем в подсказке Cygwin. Я думал, что команды Linux должны быть медленными в Cygwin, но этот подход требовал гораздо меньше усилий и был намного проще, чем любой подход Windows, который я мог найти.источник
В PowerShell:
источник
Вы также можете просто попробовать это
Он добавит содержимое file2.txt в конец file1.txt.
Если вам нужен оригинальный file1.txt, заранее сделайте резервную копию. Или ты можешь сделать это
Если вы хотите, чтобы в конце первого файла был разрыв строки, вы можете попробовать следующую команду перед добавлением.
источник
В справке для
copy
объясняется, что подстановочные знаки можно использовать для объединения нескольких файлов в один.Например, чтобы скопировать все файлы .txt в текущей папке, которые начинаются с «abc», в один файл с именем xyz.txt:
источник
источник
Это берет
Test.txt
с заголовками и добавляетTest1.txt
иTest2.txt
записывает результаты вTestresult.txt
файл после удаления заголовков из второго и третьего файлов соответственно:источник