Мне нужно объединить каждую строку, поместив содержимое одного файла в начало строки и содержимое другого файла после нее. Я не могу сделать это вручную, так как есть более 30 000 строк. Я на Windows, но я могу установить Linux при необходимости.
Я провел поиск на этом сайте и в Интернете в целом, но нашел только очень старые и устаревшие публикации, решения, объединяющие несколько файлов, но не построчно, или те, которые требуют слишком много знаний в области кодирования, которых мне не хватает. Я также пытался использовать Excel для объединения двух столбцов, но я не могу обойти ограничение в 256 символов. Если на это уже есть ответ, извините, я пропустил его. Любая помощь приветствуется. Спасибо.
Я бы использовал тот же подход. Где вы получили ограничение в 256 символов?
Sandeep 6 лет назад
0
@Sandeep При использовании функции Flash Fill в Excel я получаю сообщение, что мне следует пересмотреть все автоматические слияния, так как часть содержимого была обрезана из-за ограничения в 256 символов.
Kard Nails 6 лет назад
0
Я скопировал бы содержимое файла FileA.txt в столбце A Excel и содержимое файла FileB.txt в столбце B. Затем сохраните файл `.txt`. Откройте этот файл `.txt` в` Notepad ++ `и замените символ` TAB` между значениями на `.`.
Sandeep 6 лет назад
2
@Sandeep Это было проще, чем я себе представлял. Спасибо. Если вы отправите ответ, я приму его.
Kard Nails 6 лет назад
0
Я забыл о `paste`, который является очевидным решением, хотя в примере в вопросе нет разделителя между строками каждого файла: для этого вам нужен` paste -d "" FileA.txt FileB.txt` ,
AFH 6 лет назад
0
Как мне создать новый файл прямо из вывода? Это длинный файл ...
Kard Nails 6 лет назад
0
Просто перенаправьте в новый файл, например: `> new_file.txt`.
kenorb 6 лет назад
0
1
JoeSlav
В linux - простая команда, использующая преимущества diff (которая по умолчанию установлена практически во всех системах unix / linux) и ее -yфлаг (параллельное сравнение), sedкоторая удаляет ненужные пробелы / табуляции, вставленные процессом diff.
Я отформатировал это как сценарий для разборчивости, но он может быть введен в виде длинной командной строки, заменяя новую строку с запятой, и заменяя $1и $2на пути к файлам, которые будут объединены.
Это работает следующим образом:
E1и E2являются флагами конца файла;
Два входных потока (3 и 4) открываются из двух пройденных путей к файлам;
Строка читается из каждого файла и устанавливается в переменных l1и l2соответственно;
Обратите внимание, что read -r l1убирает начальные и конечные пробелы, следовательно, более сложный код для установки l1(и l2);
Цикл завершается, когда оба файла достигают EOF, хотя это тривиальная модификация для завершения любого файла, достигающего EOF;
Он echoбудет стандартным, или >"$3"может быть добавлен в строку, что делает выходной файл третьим параметром;
Команда echoможет быть расширена, если вы хотите добавить строку разделителя, чтобы отделить текст от каждого файла.
Приведенный выше сценарий должен работать в WSL (Windows Subsystem for Linux) в Windows 10 или CygWin в более ранних выпусках Windows.
Это было бы возможно реализовать cmd, но я бы не хотел пытаться, хотя это было бы просто в cmdбесплатной замене TCC / LE . Это также возможно с PowerShell, но я не очень разбираюсь в этом, поскольку использую в основном Linux.
1
kenorb
Используйте редактор Vim, например
Откройте два файла бок о бок: vim FileA.txt FileB.txt -O.
В первом файле вертикально выберите 2 столбца, нажав следующие клавиши:
1, Shift- G(перейти к началу файла).
Control- V(войдите в режим визуального блока).
Shift- G, $(выберите два столбца).
y (дергать / копировать в буфер).
Переход к следующему файлу, нажав: Control- w, w.
Убедитесь, что вы находитесь в первой строке: 1, Shift- G.
В первой строке нажмите: Shift- Pвставить вертикально.
Сохранить и выйти ( :wq).
Смотрите демо:
Чтобы автоматизировать вышеуказанные шаги для больших файлов, либо запишите макрос и запустите его снова, либо вы можете использовать exкоманду (часть Vim) для редактирования файлов неинтерактивно, например, смотрите: Как редактировать файлы неинтерактивно (например, в трубопровод)?
Go может достичь аналогичного в Sublime Text, либо используя плагин Vintage (Vim), либо выбрав столбец с Altвертикальной версией, скопируйте и вставьте в другой файл.
1
RProgram
Используйте редактор CudaText с функцией множественного выбора.
Выбрать все в файле-1
Вызвать «Выделение / Разбить выделение на строки» в файле-1
Выбрать все в файле-2
Вызвать «Выделение / Разбить выделение на строки» в файле-2
Копировать в буфер обмена (много строк) в файле-2
В файле-1, нажмите Конец, чтобы поместить каретки к концам строки
!! Убедитесь, что количество кареток в файле-1 равно количеству строк, скопированных в буфер обмена (если ненужная каретка в конце - Ctrl + щелкните по ней, чтобы удалить ее)
Если они равны, в конце строки нажмите Ctrl + V (Вставить) - это вставляет буфер обмена построчно
0
Sandeep
Для этого можно предпринять следующие шаги:
Скопируйте содержимое файла FileA.txtв столбце A листа Excel
Скопируйте содержимое файла FileB.txtв столбце B листа Excel