Коли йдеться про управління та аналіз даних, перетворення файлів з одного формату в інший є частою необхідністю. Якщо ви працюєте з файлами 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.