ud3*_*3sh 36
OSX的答案是不同的.
MacOS \t在sed表达式中不理解.
您必须使用ctrl+ vthen 将选项卡文字插入到sed搜索模式中tab(请参阅如何在OS X上插入带有sed的选项卡字符?)
sed 's/ /,/g' input_file > output_file
Run Code Online (Sandbox Code Playgroud)
cod*_*ict 33
您可以使用sed作为:
sed 's/\t/,/g' input_file > output_file
Run Code Online (Sandbox Code Playgroud)
这将保持输入文件不变,并将创建output_file包含更改的新文件.
如果要在不创建新文件的情况下更改输入文件本身,可以使用-ised选项进行内部更改:
sed -i 's/\t/,/g' input_file
Run Code Online (Sandbox Code Playgroud)
请记住,有多种逗号分隔值文件。由于您未指定任何一种,因此我假设采用UTF-8编码的RFC-4180格式和TSV相同,只是使用制表符而不是逗号。
天真的方法是用逗号替换每个选项卡:
tr '\t' ,
Run Code Online (Sandbox Code Playgroud)
如果任何值已经包含逗号或任何包含引号的制表符,则此值下降。您需要最少地分析文件,以保持引用。无需手动滚动这样的解析器,而是使用已经编写的代码(例如Text::CSV用于Perl)更简单,更清晰,更灵活:
#!/usr/bin/perl -w
use Text::CSV;
my $tsv = Text::CSV->new({ sep_char => "\t", auto_diag => 2 });
my $csv = Text::CSV->new();
while (my $row = $tsv->getline(*ARGV)) {
$csv->print(STDOUT, $row) or die $csv->error_diag();
print $/;
}
$csv->error_diag() unless $tsv->eof;
Run Code Online (Sandbox Code Playgroud)
Bor*_*lid -2
尝试用逗号替换所有制表符。
s/\t/,/g如果您没有任何带引号的字段,可能会使用像 这样的正则表达式。
或者,您知道,Excel 可以为您做到这一点。或者 R。或者任何可以接收 TSV 文件的东西。
| 归档时间: |
|
| 查看次数: |
75892 次 |
| 最近记录: |