在 Linux 中将 CSV 文件转换为 TSV 文件的 5 种方法
在管理和分析数据时,经常需要将文件从一种格式转换为另一种格式。如果您在 Linux 中使用 CSV(逗号分隔值)文件,并希望将其转换为 TSV(制表符分隔值Value)文件,那么您来对地方了,因为本文将帮助您完成执行所需转换的过程。
了解 CSV 和 TSV
CSV 文件已广泛用于存储结构化数据。但是,TSV 文件比 CSV 文件具有一些优势。
CSV 文件使用逗号分隔值,而 TSV 文件则使用制表符,这可以使数据处理更轻松,尤其是在处理数据本身内的逗号时。
TSV 文件还往往与常用于数据处理和分析的各种应用程序和工具更兼容。
如何在 Linux 中将 CSV 转换为 TSV
在Linux中将CSV文件转换为TSV文件可以通过多种方法实现,如下:
1.使用awk命令
awk 是一个功能强大的文本处理工具,可让您有效地操作和转换数据,它还用于将 CSV 文件转换为 TSV 文件,如图所示。
awk -F ',' 'BEGIN {OFS="\t"} {$1=$1}1' tecmint.csv > tecmint.tsv
ls -l tecmint.tsv
将 howtoing.csv 替换为 CSV 文件的实际文件名,并将 howtoing.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)
。- input.csv 应替换为 CSV 文件的实际文件名。
- output.tsv 指定转换后的 TSV 文件所需的文件名。您可以选择任何您喜欢的名称。
3.使用csvkit库
csvkit 库提供了一组方便且功能强大的命令行工具,用于在 Linux 中处理 CSV 文件。它提供了一种将 CSV 文件转换为 TSV 格式的简单方法。
但是,您必须首先通过以下命令在 Linux 系统上安装 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脚本
要将 CSV 文件转换为 Linux 中的 TSV 文件,您可以使用 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 文件名。
然后使用 python3 解释器运行 Python 文件:
python3 tecmint.py
5. 使用 Perl 脚本
您还可以在 Linux 中使用 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 并输入按钮。
使 Perl 脚本可执行并使用以下命令运行 Perl 脚本:
chmod +x tecmint.pl
./tecmint.pl
ls -l tecmint.tsv
结论
在 Linux 中使用 CSV 文件并需要将其转换为 TSV 文件时,有多种方法可用。本文提供了使用 awk 和 sed 等命令、利用 csvkit 库、使用 Python 的分步说明。,并采用Perl编程语言。
每种方法都有自己的优点,并且可以轻松将 CSV 文件转换为 TSV 格式。通过遵循提供的说明,用户可以有效地执行所需的转换并在 Linux 系统中使用 TSV 文件。