Когда речь идет об управлении и анализе данных, преобразование файлов из одного формата в другой является частой необходимостью. Если вы работаете с файлами CSV (Comma-Separated Values) в Linux и хотите преобразовать их в файлы TSV (Tab-Separated Values), вы попали по адресу, потому что эта статья поможет вам с процессом выполнения необходимого преобразования.
Понимание CSV и TSV
Файлы CSV широко используются для хранения структурированных данных. Однако файлы TSV имеют некоторые преимущества перед файлами CSV.
Если в файлах CSV значения разделяются запятыми, то в файлах TSV используются табуляции, что облегчает работу с данными, особенно при работе с запятыми в самих данных.
Файлы TSV также более совместимы с различными приложениями и инструментами, обычно используемыми для обработки и анализа данных.
Как преобразовать CSV в TSV в Linux
Преобразование файлов CSV в файлы TSV в Linux может быть выполнено различными методами, которые приведены ниже:
1. Использование команды awk
awk — это мощный инструмент обработки текста, позволяющий эффективно манипулировать и преобразовывать данные, который также используется для преобразования файла CSV в файл TSV, как показано на рисунке.
$ awk -F ',' 'BEGIN {OFS="t"} {$1=$1}1' tecmint.csv > tecmint.tsv
$ ls -l tecmint.tsv
Замените tecmint.csv фактическим именем файла CSV, а tecmint.tsv — желаемым именем преобразованного файла TSV.
Давайте разберем команду:
- -F ‘,’ задает разделитель входных полей в виде запятой, указывая, что входной файл имеет формат CSV.
- BEGIN {OFS=»t»} задает разделитель выходных полей в виде табуляции, указывая, что выходной файл должен быть в формате TSV.
- {$1=$1} заставляет awk переформатировать поля ввода, используя указанные разделители полей.
- 1 — это обычный шаблон awk, который вызывает действие по умолчанию — печать измененной записи.
2. Использование команды sed
Команда sed — еще один мощный инструмент, доступный в Linux, который можно использовать для легкого преобразования файлов CSV в файлы TSV.
Вот команда sed, которую нужно выполнить в терминале для преобразования CSV-файла в TSV-файл.
$ sed 's/,/t/g' tecmint.csv > tecmint.tsv
$ ls -l tecmint.tsv
Давайте разберемся в компонентах команды:
- s/,/t/g — это шаблон подстановки, используемый программой sed, которая ищет запятые (,) во входном файле и заменяет их на табуляцию (t).
- csv должно быть заменено реальным именем файла CSV.
- tsv указывает желаемое имя файла для преобразованного TSV-файла. Вы можете выбрать любое имя, которое вам больше нравится.
3. Использование библиотеки csvkit
Библиотека csvkit предоставляет удобный и мощный набор инструментов командной строки для работы с файлами CSV в Linux. Она предлагает простой способ преобразования файлов CSV в формат TSV.
Однако сначала вы должны установить csvkit в вашей системе Linux с помощью следующей команды:
$ sudo apt install csvkit [On Debian, Ubuntu and Mint]
$ sudo yum install csvkit [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
$ sudo emerge -a sys-apps/csvkit [On Gentoo Linux]
$ sudo apk add csvkit [On Alpine Linux]
$ sudo pacman -S csvkit [On Arch Linux]
$ sudo zypper install csvkit [On OpenSUSE]
Затем используйте следующую команду с опцией -T, которая задает разделитель вывода в виде табуляции и преобразует CSV-файл в формат TSV.
$ csvformat -T tecmint.csv > tecmint.tsv
$ ls -l tecmint.tsv
4. Использование сценария Python
Для преобразования файла CSV в файл TSV в Linux вы можете использовать Python, универсальный язык программирования, который широко доступен в системах Linux. Выполните следующие шаги, чтобы использовать Python для преобразования:
Создайте новый файл сценария Python в терминале, выполнив следующую команду:
$ nano tecmint.py
OR
$ vi tecmint.py
Затем добавьте следующий код в файл сценария.
import csv
csv_file = 'tecmint.csv'
tsv_file = 'tecmint.tsv'
with open(csv_file, 'r') as input_file, open(tsv_file, 'w') as output_file:
csv_reader = csv.reader(input_file)
tsv_writer = csv.writer(output_file, delimiter='t')
for row in csv_reader:
tsv_writer.writerow(row)
Вы должны заменить имя файла CSV на собственное имя файла, сохраненное в вашей системе, а имя файла TSV — по вашему выбору.
Затем запустите файл Python с помощью интерпретатора python3:
$ python3 tecmint.py
5. Использование сценария Perl
Вы также можете использовать язык программирования Perl в Linux для преобразования файла CSV в файл TSV. Для этого необходимо выполнить следующие шаги:
Создайте новый файл сценария Perl с помощью следующей команды:
$ nano tecmint.pl
OR
$ vi tecmint.pl
Добавьте следующий код в файл сценария:
#!/usr/bin/perl
use strict;
use warnings;
my $csv_file = 'tecmint.csv';
my $tsv_file = 'tecmint.tsv';
open(my $input_fh, '<', $csv_file) or die "Failed to open $csv_file: $!";
open(my $output_fh, '>', $tsv_file) or die "Failed to create $tsv_file: $!";
while (my $line = <$input_fh>) {
chomp $line;
my @fields = split(',', $line);
my $tsv_line = join("t", @fields);
print $output_fh $tsv_line . "n";
}
close $input_fh;
close $output_fh;
Затем сохраните файл с помощью CTRL+X, затем Y и кнопки Enter.
Сделайте Perl-скрипт исполняемым и запустите его с помощью следующих команд:
$ chmod +x tecmint.pl
$ ./tecmint.pl
$ ls -l tecmint.tsv
Заключение
При работе с файлами CSV в Linux и необходимости преобразования их в файлы TSV существует несколько методов. В статье приведены пошаговые инструкции по использованию команд awk и sed, применению библиотеки csvkit, использованию Python и языка программирования Perl.
Каждый метод имеет свои преимущества и позволяет легко преобразовать файлы CSV в формат TSV. Следуя приведенным инструкциям, пользователи смогут эффективно выполнить необходимое преобразование и работать с файлами TSV в своей системе Linux.