我有一个包含以下数据的文件
Name Id Contact Email
raj 3232 408333 ra@gmail.com
anu 353453 409242 anu@yahoomail.com
我想用以下数据替换上面的文件。
Name,Id,Contact,Email
raj,3232,408333,ra@gmail.com
anu,353453,409242,anu@yahoomail.com
用逗号替换行中的所有空格,并忽略每个新行之间的空格。我怎么能实现这个?
我在线阅读$value =~ s/\s+/,/g;
会转换一行中的所有空格和制表符,并用逗号替换它。但它并没有那样执行。
有人可以提出建议吗?
这是我的确切代码。它可能会有点混乱。但在这里。该文件将被复制到一个数组中,然后根据需要对数组进行更改。一旦做出更改,数组就会被写回文件。
open(FILE, $filename) || die "File not found";
my @lines = <FILE>;
close(FILE);
my @newlines;
foreach(@lines) {
$_ =~ tr/ \t/,/s;
push(@newlines,$_);
}
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
print $fh @newlines;
close($fh);
}
答案 0 :(得分:2)
答案 1 :(得分:0)
要在终端上执行此操作,您可以执行此操作:
perl -pe 'tr/ /,/s' datafile.txt
要使用更改后的版本替换原始文件,只需添加i选项:
perl -pi -e 'tr/ /,/s' datafile.txt
<强>输出:强>
$ perl -pe 'tr/ /,/s' datafile.txt
Name,Id,Contact,Email
raj,3232,408333,ra@gmail.com
anu,353453,409242,anu@yahoomail.com
$
$ perl -pi -e 'tr/ /,/s' datafile.txt
$ more datafile.txt
Name,Id,Contact,Email
raj,3232,408333,ra@gmail.com
anu,353453,409242,anu@yahoomail.com
$