Объединить содержимое двух файлов linux

Использование команды CAT для объединения текстовых файлов в Ubuntu

Команда CAT в Linux полезна не только для создания текстовых файлов, отображения их содержимого, но и для объединения текста из двух или более текстовых файлов. Затем объединенный текст может быть сохранен в другом текстовом файле. В этом руководстве вы узнаете, как использовать команду CAT для объединения текста из двух или более файлов в один. Это поможет вам из обычного новичка превратиться в опытного пользователя Ubuntu.

В этой статье мы приведем несколько примеров, которые помогут вам понять, как правильно использовать команду CAT в следующих четырех сценариях:

  • Слияние текста из нескольких текстовых файлов в один текстовый файл.
  • Слияние текста из нескольких файлов и сохранение результатов в другой файл в алфавитном порядке.
  • Добавление текста из одного текстового файла в другой.
  • Добавление текста из терминала Ubuntu непосредственно в текстовый файл.

Хорошей практикой является резервное копирование важных файлов перед изменением их содержимого.

Пример 1: Слияние текста из трех файлов в другой текстовый файл

Мы создали в нашей системе три образца текстовых файлов с именами textfile1.txt, textfile2.txt и textfile3.txt. Все эти файлы содержат по строке текста. Следующее использование команды CAT выведет текст из всех этих файлов в одном выводе.

Откройте терминал Ubuntu, нажав CTRl+Alt+T или через Dash, а затем введите следующую команду:

 cat [file1.txt] [file2.txt] [file3.txt]

На следующем изображении вы можете видеть, как вывод из моих трех текстовых файлов печатается как один объединенный вывод:

Слияние трех текстовых файлов с помощью команды cat

Linux позволяет печатать вывод команды в файл, используя следующий синтаксис:

Давайте воспользуемся этой командой и командой cat для сохранения текста из трех различных текстовых файлов в новый текстовый файл:

cat [file1.txt] [file2.txt] [file3.txt] > [file4.txt]

На следующем рисунке я сохраняю объединенный текст из трех файлов в новый файл file4.txt; затем я печатаю содержимое нового файла на экране для просмотра:

Слияние 3 файлов в четвертый файл

Помните, что если целевой текстовый файл уже существует в вашей системе, его содержимое будет перезаписано.

Пример 2: Слияние текста из трех файлов и сохранение результатов в другом файле в алфавитном порядке

Предположим, у вас есть три текстовых файла, каждый из которых содержит некоторый текст. Вы хотите объединить текст из всех трех файлов и сохранить результат в четвертом файле, но в алфавитном порядке. Вот как вы это сделаете:

cat [file1.txt] [file2.txt] [file3.txt] | sort > [file4.txt].

На следующем изображении вы можете просмотреть текст из каждого из моих текстовых файлов. Если я просто объединю текст в новый файл textfile4.txt, результат будет следующим:

Читайте также:  New file linux terminal

объединить текстовые файлы

Однако я хочу, чтобы в мой текстовый файл был выведен отсортированный по алфавиту результат, поэтому я использую следующую команду:

cat file1.txt file2.txt file3.txt | sort > file5.txt

Слияние текста из трех файлов и сохранение вывода в другой файл в алфавитном порядке

Вы можете видеть, как мой новый созданный файл file5.txt содержит объединенный и отсортированный текст из трех исходных файлов.

Пример 3: Добавление текста из одного текстового файла в другой

Команду cat можно также использовать для добавления текста из исходного файла в конечный файл, не испортив содержимое последнего.

Вот пример файла назначения:

Образец текстового файла

Вот пример исходного файла:

образец исходного файла

Синтаксис для добавления текста:

[sourcefile.txt] >> [destinationfile.txt]

Вот как выглядит мой конечный файл после того, как я добавлю в него текст из исходного файла:

Добавить текст в файл

Пример 4: Добавление текста из терминала непосредственно в файл

Если вы хотите добавить некоторый текст из командной строки в конец уже существующего текстового файла, вы можете использовать следующий синтаксис:

После ввода этой команды появится курсор для ввода текста, который вы хотите добавить в указанный файл. Введите текст и нажмите Ctrl+D. Введенный вами текст будет добавлен в конец файла, не нарушая его уже существующего содержимого.

Добавление текста из терминала непосредственно в файл

Мы надеемся, что подробные примеры, описанные в этой статье, а также синтаксис команды cat в каждом случае помогут объединить содержимое нескольких файлов в один. Более того, вы можете выполнять сортировку и добавление текста не только из одного файла в другой, но и непосредственно из терминала Ubuntu.

Похожие записи:

Источник

Concatenating multiple text files into a single file in Bash

What is the quickest and most pragmatic way to combine all *.txt file in a directory into one large text file? Currently I’m using windows with cygwin so I have access to BASH. Windows shell command would be nice too but I doubt there is one.

12 Answers 12

This appends the output to all.txt

you may run into a problem where it cats all.txt into all.txt. I have this problem with grep sometimes, not sure if cat has the same behavior.

@rmeador yes, that is true, if all.txt already exists you will have this problem. This problem is solved by providing the output file with a different extension, or moving all.txt to a different folder.

Just remember, for all the solutions given so far, the shell decides the order in which the files are concatenated. For Bash, IIRC, that’s alphabetical order. If the order is important, you should either name the files appropriately (01file.txt, 02file.txt, etc. ) or specify each file in the order you want it concatenated.

$ cat file1 file2 file3 file4 file5 file6 > out.txt 

The Windows shell command type can do this:

Type type command also writes file names to stderr, which are not captured by the > redirect operator (but will show up on the console).

Just be aware that if you put the output file in the same directory as the original file it will cause a duplication because it will also combine the new output file twice.

Читайте также:  Альт линукс криптопро csp

You can use Windows shell copy to concatenate files.

To append files, specify a single file for destination, but multiple files for source (using wildcards or file1+file2+file3 format).

This as the IMHO cleanest solution with basically no side effects that beginners could trip over unfortunately does not get appreciated enough 🙁

Worked pretty well, except at the very end of my file I got a weird SUB special unicode character. Deleting it is pretty easy programmatically but not sure why that happened.

Be careful, because none of these methods work with a large number of files. Personally, I used this line:

for i in $(ls | grep ".txt");do cat $i >> output.txt;done 

EDIT: As someone said in the comments, you can replace $(ls | grep «.txt») with $(ls *.txt)

EDIT: thanks to @gnourf_gnourf expertise, the use of glob is the correct way to iterate over files in a directory. Consequently, blasphemous expressions like $(ls | grep «.txt») must be replaced by *.txt (see the article here).

Good Solution

for i in *.txt;do cat $i >> output.txt;done 

Mandatory ParsingLs link, together with a downvote (and you deserve more than one downvote, because ls | grep is a seriously bad antipattern).

Got an upvote from me because it allows for arbitrary testing/ operations by file name prior to output and it’s quick and easy and good for practice. (In my case I wanted: for i in *; do echo -e «\n$i:\n»; cat $1; done )

find . -type f -name '*.txt' -exec cat <> + >> output.txt 

Since OP says the files are in the same directory, you may need to add -maxdepth 1 to the find command.

This should be the correct answer. It will work properly in a shell script. Here is a similar method if you want output sorted: sort -u —output=»$OUTPUT_FILE» —files0-from=- < <(find "$DIRECTORY_NAME" -maxdepth 1 -type f -name '*.txt' -print0)

This is a very flexible approach relying on all the strengths of the find . My favourite! Surely cat *.txt > all.txt does the job within the same directory (as pointed out above). To me, however, becoming comfortably fluent in using find has been a very good habit. Today they’re all in one folder, tomorrow they have multiple file-endings across nested directory hierarchies. Don’t overcomplicate, but also, do make friends with find . 🙂

Источник

Команда cat в Linux

Команда cat — одна из наиболее широко используемых команд в Linux. Имя cat команды происходит от его функциональности против кошачьих файлов Enate. Он может читать и объединять файлы, записывая их содержимое в стандартный вывод. Если файл не указан или если имя входного файла указано в виде одного дефиса ( — ), он считывается из стандартного ввода.

Cat чаще всего используется для отображения содержимого одного или нескольких текстовых файлов, объединения файлов путем добавления содержимого одного файла в конец другого файла и создания новых файлов.

Читайте также:  Как увеличить яркость в линукс

В этом руководстве мы покажем вам, как использовать команду cat на практических примерах.

Синтаксис команды Cat

Прежде чем перейти к использованию команды cat, давайте начнем с обзора основного синтаксиса.

Выражения утилиты cat принимают следующую форму:

  • OPTIONS — варианты кошек . Используйте cat —help чтобы просмотреть все доступные параметры.
  • FILE_NAMES — Ноль или более имен файлов.

Отображение содержимого файла

Наиболее простое и распространенное использование команды cat — это чтение содержимого файлов.

Например, следующая команда отобразит содержимое файла /etc/issue в терминале:

Перенаправить содержимое файла

Вместо вывода вывода на стандартный вывод (на экране) вы можете перенаправить его в файл.

Следующая команда скопирует содержимое file1.txt в file2.txt с помощью оператора ( > ):

Если файл file2.txt не существует, команда создаст его. В противном случае он перезапишет файл.

Используйте оператор ( >> ), чтобы добавить содержимое file1.txt в file2.txt :

Как и раньше, если файла нет, он будет создан.

Печатать номера строк

Чтобы отобразить содержимое файла с номерами строк, используйте параметр -n :

1 DISTRIB_ID=Ubuntu 2 DISTRIB_RELEASE=18.04 3 DISTRIB_CODENAME=bionic 4 DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS" 

Подавить повторяющиеся пустые строки

Используйте параметр -s чтобы пропустить повторяющиеся пустые выходные строки:

Отображение символов TAB

Параметр -T позволяет визуально различать табуляции и пробелы.

127.0.0.1^Ilocalhost 127.0.1.1^Iubuntu1804.localdomain 

Символы TAB будут отображаться как ^I

Показать конец строк

Чтобы отобразить невидимый символ окончания строки, используйте аргумент -e :

DISTRIB_ID=Ubuntu$ DISTRIB_RELEASE=18.04$ DISTRIB_CODENAME=bionic$ DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS"$ 

Окончание строки будет отображаться как $ .

Объединение файлов

При передаче двух или более имен файлов в качестве аргументов команде cat содержимое файлов будет объединено. cat читает файлы в последовательности, указанной в его аргументах, и отображает содержимое файла в той же последовательности.

Например, следующая команда прочитает содержимое file1.txt и file2.txt и отобразит результат в терминале:

Вы можете объединить два или более текстовых файла и записать их в файл.

Следующая команда file1.txt содержимое file1.txt и file2.txt и запишет их в новый combinedfile.txt file2.txt с помощью оператора ( > ):

cat file1.txt file2.txt > combinedfile.txt

Если combinedfile.txt файл не существует, то команда будет создавать. В противном случае он перезапишет файл.

Чтобы file1.txt содержимое file1.txt и file2.txt и добавить результат в file3.txt с помощью оператора ( >> ):

cat file1.txt file2.txt >> file3.txt

Если файла нет, он будет создан.

При объединении файлов с помощью cat вы можете использовать те же аргументы, что и в предыдущем разделе.

Создание файлов

Создавать небольшие файлы с помощью cat часто проще, чем открывать текстовый редактор, такой как nano , Vim, Sublime Text или Visual Studio Code .

Чтобы создать новый файл, используйте команду cat за которой следует оператор перенаправления ( > ) и имя файла, который вы хотите создать. Нажмите Enter , введите текст и, когда закончите, нажмите CRTL+D чтобы сохранить файл.

В следующем примере мы создаем новый файл с именем file1.txt :

Если присутствует файл с именем file1.txt , он будет перезаписан. Используйте оператор « >> », чтобы добавить вывод в существующий файл.

Выводы

Команда cat может отображать, комбинировать и создавать новый файл.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Источник

Оцените статью
Adblock
detector