جدول محتوایی
وقتی صحبت از مدیریت و تجزیه و تحلیل داده ها می شود، تبدیل فایل ها از یک فرمت به فرمت دیگر یک نیاز مکرر است. اگر با فایلهای CSV (مقادیر جدا شده با کاما) در لینوکس کار میکنید و میخواهید آنها را به فایلهای TSV (مقادیر جداشده با تب) تبدیل کنید، در جای مناسبی هستید زیرا این مقاله به شما در انجام فرآیند تبدیل مورد نیاز کمک میکند. .
درک CSV و TSV
فایل های CSV به طور گسترده ای برای ذخیره سازی داده های ساخت یافته استفاده شده اند. با این حال، فایلهای TSV مزایایی نسبت به فایلهای CSV دارند.
در حالی که فایلهای CSV مقادیر را با Comma-Separated Values از هم جدا میکنند، فایلهای TSV از برگهها استفاده میکنند که میتواند مدیریت دادهها را آسانتر کند، بهویژه زمانی که با comma در خود داده سروکار داریم.
فایلهای TSV همچنین با برنامهها و ابزارهای مختلفی که معمولاً برای پردازش و تجزیه و تحلیل دادهها استفاده میشوند، سازگاری بیشتری دارند.
نحوه تبدیل CSV به TSV در لینوکس
تبدیل فایلهای CSV به فایلهای TSV در لینوکس از طریق روشهای مختلفی امکانپذیر است که به شرح زیر است:
1. awk Command
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} با استفاده از جداکننده های مشخص شده، فیلدهای ورودی را مجدداً فرمت می کند.
- 1 یک الگوی متداول awk است که عمل پیشفرض را فعال میکند، یعنی چاپ رکورد تغییر یافته.
2. sed Command
sed command یکی دیگر از ابزارهای قدرتمند موجود در لینوکس است که می توان از آن برای تبدیل فایل های CSV به فایل های TSV به راحتی استفاده کرد.
در اینجا sed command است که باید در ترمینال برای تبدیل فایل CSV به فایل TSV اجرا کنید.
$ sed 's/,/\t/g' tecmint.csv > tecmint.tsv $ ls -l tecmint.tsv
بیایید اجزای دستور را درک کنیم:
- s/,/\t/g الگوی جایگزینی است که توسط sed استفاده می شود، که کاما (،) را در فایل ورودی جستجو می کند و آنها را با زبانه ها (\t) جایگزین می کند.
- input.csv باید با نام فایل واقعی فایل CSV شما جایگزین شود.
- output.tsv نام فایل مورد نظر را برای فایل TSV تبدیل شده مشخص می کند. شما می توانید هر نامی را که دوست دارید انتخاب کنید.
3. csvkit Library
کتابخانه csvkit مجموعه ای مناسب و قدرتمند از ابزارهای خط فرمان را برای کار با فایل های CSV در لینوکس فراهم می کند. این یک راه آسان برای تبدیل فایل های CSV به فرمت TSV ارائه می دهد.
با این حال، ابتدا باید csvkit را بر روی سیستم لینوکس خود از دستور زیر نصب کنید:
$ 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 Script
برای تبدیل یک فایل CSV به فایل TSV در لینوکس، می توانید از 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 با توجه به انتخاب خود جایگزین کنید.
سپس فایل پایتون را با استفاده از مفسر python3 اجرا کنید:
$ python3 tecmint.py
5. Perl Script
همچنین می توانید از زبان برنامه نویسی Perl در لینوکس برای تبدیل فایل 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 را قابل اجرا کنید و اسکریپت Perl را با استفاده از دستورات زیر اجرا کنید:
$ chmod +x tecmint.pl $ ./tecmint.pl $ ls -l tecmint.tsv