Объединение файлов командой cat
Команду cat в большинстве случаев используют только для просмотра файлов. На самом деле одно из ее предназначений это конкатенация (объединение) файлов. А название команды происходит от слова catenate (сцепить), то есть присоединение одного после другого.
Под объединением файлов понимается их соединение. Например, если мы имеем два текстовых файла и в одном из них записана строка:
My text file 1
А в другом:
My text file 2
То после объединения мы получим файл с двумя строками:
My text file 1
My text file 2
То есть происходит простое соединение файлов. К содержимому одного добавляется содержимое другого. Это касается не только текстовых файлов, но и всех остальных (бинарных, например).
Чтобы объединить два файла командой cat нужно просто указать в качестве аргументов названия этих файлов и направить результат выполнения в новый файл. Например, мы хотим объединить два файла file1 и file2, а результат записать в новый файл file12. Тогда мы должны выполнить следующую команду:
Вы можете объединить неограниченное количество файлов. Например, чтобы объединить четыре файла и записать результат в файл myfile, выполните команду:
Изучаю Linux. Любой Линукс 🙂
среда, 31 марта 2010 г.
Объединение двух файлов в один построчно
Возникла у меня потребность в объединении двух текстовых файлов в один. Да не просто так, а чтобы их строки чередовались друг с другом. Для чего это нужно? Для того, чтобы организовать простейший, небольшой по размеру справочник для программы/скрипта/сайта и т.д. Я таким образом делал справочник МКБ-10 — коды заболеваний, который нужен был по работе. Что долго рассказывать, айда под кат за сокральными знаниями 😉
Итак, вот у меня два файла:
code.txt
Первый элемент из А
Второй элемент из А
. [пропущено].
Последний элемент из Z
На выходе у меня должно получиться следующий файл dict.txt:
A0001
Первый элемент А
A0002
Второй элемент А
. [пропущено].
Z9999
Последний элемент Z
Делается это очень и очень просто одной командой. Да! Shell-скрипты — это чудо какое-то 🙂
paste -d «\n» code.txt descr.txt > dict.txt
Вот что говорит МАН по поводу этой команды: «Выводит на стандартный вывод строки, состоящие из соответствующих строк каждого ФАЙЛА, разделенных символом табуляции.» Но это по-умолчанию. А если задать параметр -d (от англ. Delimetr — Разделитель) и указать этот самый разделитель, в данном случае «Перевод строки» — символ «\n», то вместо табуляции каманда будет выводить строки, разделенные «переводом строки».
Пишу для себя, чтобы запомнить и не потерять. Если кому что непонятно, то курите мануал или теребите в коментах 😀
Wpilot
суббота, 11 мая 2019 г.
Объединить текстовые файлы с помощью команды cat в Linux
Команда cat очень полезна в Linux. Она имеет три основные функции связанные с манипулированием текстовыми файлами: создание, отображение и объединение.
Давайте предположим что у вас есть три текстовых файла: file1.txt, file2.txt и file3.txt. Вы хотите объединить их в один текстовый файл содержащий информацию о всех трех в указанном порядке. Вы можете сделать это с помощью команды cat.
Просто откройте терминал и введите следующую команду:
cat file1.txt file2.txt file3.txt
Замените имена файлов в приведенном выше примере своими именами.
Объединенное содержимое трех текстовых файлов появится в вашем терминале.
Вероятно вы захотите объединить эти текстовые файлы в другой текстовый файл а не просто распечатать результаты на экране терминала. Это очень просто. Все что вам нужно сделать это добавить символ > после списка объединяемых файлов а затем указать имя окончательного текстового файла.
cat file1.txt file2.txt file3.txt> file4.txt
Теперь если вы откроете файл file4.txt с помощью команды cat или с помощью выбранного вами текстового редактора вы обнаружите что он содержит текст первых трех текстовых файлов.
Если вы объединяете списки элементов из нескольких файлов и хотите чтобы они были в алфавитном порядке в объединенном файле вы можете отсортировать объединенные элементы в конечном файле. Для этого используйте команду sort. Все строки текста в файле в результате будут отсортированы в алфавитном порядке.
cat file1.txt file2.txt file3.txt | sort > file4.txt
Существует также способ добавления файлов в конец существующего файла. Введите команду cat а затем файл которые вы хотите добавить в конец существующего файла. Затем введите два символа >> и имя конечного файла в который хотите добавить текст.
cat file5.txt >> file4.txt
Если вы хотите добавить немного нового текста в существующий текстовый файл используйте команду cat чтобы сделать это непосредственно из терминала. Введите команду cat за которой следует двойной символ >> и имя файла в который вы хотите добавить текст.
На следующей строке появится курсор. Начните вводить текст который хотите добавить в файл. Когда закончите нажмите Enter после последней строки а затем нажмите Ctrl + D чтобы скопировать этот текст в конец файла и выйти из cat.
Как разбить файл на части в Linux
Иногда может понадобиться разбить какой-то файл в Linux на части, например, чтобы записать на несколько носителей, а потом, позже склеить эти части обратно в один файл. Задача решается легко с помощью команд split и cat. Приведу пару наиболее востребованных примеров, по которым станет понятно как пользоваться командами.
Разбить файл на части определенного размера
В данном случае команда split разбивает файл на части по 100 мегабайт. Размер так же можно указать просто в байтах, или использовать другие обозначения (K — килобайты, G — гигабайты, T — терабайты и т.д.)
Разбить файл на определенное количество частей
В этом примере файл разбивается на 3 равные части, при этом все они будут одинакового размера, только последняя часть может отличаться размером на 1 байт, если размер исходного файла не делится ровно на количество частей.
Объединить (склеить) части файлов в один файл
Эта задача решается с помощью команды cat и перенаправления выходного потока.
В этом примере 3 части будут объединены в один общий файл myfile.txt
У команды split есть еще несколько настроек, например, чтобы вместо буквенного обозначения частей генерировались цифровые (-d) и еще несколько других. О них вы можете почитать набрав команду man split.
unixforum.org
Форум для пользователей UNIX-подобных систем
склеить два файла
Модератор: /dev/random
склеить два файла
Сообщение susik » 14.01.2007 22:08
Re: склеить два файла
Сообщение Pavel Ghost » 14.01.2007 22:19
Смотря каких файлов — текстовых или двоичных.
Для первых — самый простой вариант:
cat file1.txt file2.txt > result_file.txt
Re: склеить два файла
Сообщение elide » 14.01.2007 22:33
Re: склеить два файла
Сообщение BaBL » 15.01.2007 01:46
Re: склеить два файла
Сообщение Mellon » 15.01.2007 03:22
Re: склеить два файла
Сообщение d_n_k » 15.01.2007 10:53
хочешь менять структуру файловой системы?
тогда читай маны по утилитам к твоей файловой системе.
а так man cat man dd
Re: склеить два файла
Сообщение susik » 15.01.2007 14:50
Смотря каких файлов — текстовых или двоичных.
Для первых — самый простой вариант:
cat file1.txt file2.txt > result_file.txt
Re: склеить два файла
Сообщение elide » 15.01.2007 18:29
Re: склеить два файла
Сообщение Slimy » 15.01.2007 19:23
хочешь менять структуру файловой системы?
тогда читай маны по утилитам к твоей файловой системе.
а так man cat man dd
Re: склеить два файла
Сообщение susik » 16.01.2007 09:08
Ну у меня была задача такая, я ее решил правда немного подругому, но все равно стало интересно как склеить два файла.
Значит в первом файле, назовем его допустим file1.txt, следующая информация:
mv ‘Track 1 Albom 1.mp3.HWFIUFG09345034THEEGH.test’
mv ‘Track 2 Albom 1.mp3.KJDHF39048UT930GUJDJFF.test
mv ‘Track 2 Albom 1.mp3.JISH904JF.test’
А во втором файле
‘Track 1 Albom 1.mp3’
‘Track 2 Albom 1.mp3’
‘Track 3Albom 1.mp3’
А результат в третьем файле должен быть:
склеить файлы cat`ом?
Имееться 50 файлов d3roe.001 . d3roe.050. Как их склеить в один (d3roe.rar) cat’ом не перечесляя все 50 файлов в коммандной строке(cat d3roe.001 d3roe.002. d3roe.050 > d3roe.rar). В регулярных выражениях не силён.Подскажите плз.
Re: склеить файлы cat`ом?
for i in `ls d3roe.*`; do
cat $i >> d3roe.rar;
done;
Re: склеить файлы cat`ом?
for ((i=1; $i > d3roe.rar; done
не смотри удаленные — там я ошибся =)
Re: склеить файлы cat`ом?
а если там d3roe.045 и его не надо? =)
Re: склеить файлы cat`ом?
for i in `ls d3roe.*`; do cat $i >> d3roe.rar; done;
cat d3roe.* > d3roe.rar;
Re: склеить файлы cat`ом?
Да, а про ноль я и забыл! 😉
Re: склеить файлы cat`ом?
> не смотри удаленные — там я ошибся =)
Ты и здесь ошибся! Форматирование неправильное! ;-))
Re: склеить файлы cat`ом?
если у него в каталоге не только эти файлы но и какой нибудь d3roe.067 он в твоем скрипте тоже склеится. в ТЗ же написано только 50 файлов с 001 до 050. так что бажный твой скрипт.
Re: склеить файлы cat`ом?
Разархивировать и запаковать по новой в один файл? 🙂
Re: склеить файлы cat`ом?
Re: склеить файлы cat`ом?
>cat d3roe.028 d3roe.050 > d3roe.rar
censored:/ssa/ifs # echo d3roe.039 d3roe.050
d3roe.042 d3roe.050
censored:/ssa/ifs # echo d3roe.0<0..4> <0..9>d3roe.050
d3roe.000 d3roe.001 d3roe.002 d3roe.003 d3roe.004 d3roe.005 d3roe.006 d3roe.007 d3roe.008 d3roe.009 d3roe.010 d3roe.011 d3roe.012 d3roe.013 d3roe.014 d3roe.015 d3roe.016 d3roe.017 d3roe.018 d3roe.019 d3roe.020 d3roe.021 d3roe.022 d3roe.023 d3roe.024 d3roe.025 d3roe.026 d3roe.027 d3roe.028 d3roe.029 d3roe.030 d3roe.031 d3roe.032 d3roe.033 d3roe.034 d3roe.035 d3roe.036 d3roe.037 d3roe.038 d3roe.039 d3roe.040 d3roe.041 d3roe.042 d3roe.043 d3roe.044 d3roe.045 d3roe.046 d3roe.047 d3roe.048 d3roe.049 d3roe.050
censored:/ssa/ifs # echo $SHELL
/bin/bash
Re: склеить файлы cat`ом?
Re: склеить файлы cat`ом?
разрешите поинтересоваться — а чем собственно мой вариант не подходит?
он решает задачу и не затрагивает лишних файлов с похожими названиями.
Re: склеить файлы cat`ом?
Разве я говорил, что не подходит? Подходит, просто часто есть несколько путей решения задачи.
Единственный недостаток — у тебя в цикле 50 раз запускается cat + некоторая «сложность» из-за наличия цикла.
Встречный вопрос: чем плох вариант
mv d3roe.000 HAX_d3roe.000 ; cat d3roe.025 d3roe.050 > d3roe.rar ; mv HAX_d3roe.000 d3roe.000
Re: склеить файлы cat`ом?
а если в каталоге уже есть файл HAX_d3roe.000?
Re: склеить файлы cat`ом?
Пожалуй вот это самое то от sdio cat d3roe.023 d3roe.050 > d3roe.rar Всем ПАСИБА.
Re: склеить файлы cat`ом?
А для этого я второй вариант в том же сообщении предложил