您好:我希望通过awk,perl或sed修改以下文本中的一个分隔符
a,b,c,d,e,f,g,,,,k,l,m
将输出设为
a,b,c,d,e-f,g,,,,k,l,m
如何修改第n个分隔符?提前致谢
答案 0 :(得分:10)
您可以使用此sed
,
sed 's/,/-/5' yourfile
答案 1 :(得分:1)
我无法击败sed,但是这个Perl命令会按照你的要求进行操作
perl -aF, -pe"splice @F,4,2,qq{$F[4]-$F[5]};$_=join ',',@F" myfile
答案 2 :(得分:1)
一般情况下,perl不支持计算s///
操作并在每个操作上做出不同的选择,但是使用/e
标志可以自己做。
my $n = 0;
$string =~ s/,/++$n == 5 ? "-" : ","/eg;
将记录替换发生的次数,并在第五次进行不同的更改。
答案 3 :(得分:0)
或使用perl
my @array = ('a','b','c','d','e','f','g');
$array[4] = $array[4] . "-" . $array[5];
splice(@array, 5, 1);