Как преобразовать файл CSV в файл TSV в Linux

Когда речь идет об управлении и анализе данных, преобразование файлов из одного формата в другой является частой необходимостью. Если вы работаете с файлами 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.

Поделитесь с друзьями

Добавить комментарий

0 комментариев
Вбудовані Відгуки
Переглянути всі коментарі
0
Ми любимо ваші думки, будь ласка, прокоментуйте.x