Як перетворити файл 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