如何修改文本之间的单个分隔符

时间:2014-03-06 12:44:26

标签: perl sed awk

您好:我希望通过awk,perl或sed修改以下文本中的一个分隔符

a,b,c,d,e,f,g,,,,k,l,m 

将输出设为

a,b,c,d,e-f,g,,,,k,l,m

如何修改第n个分隔符?提前致谢

4 个答案:

答案 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);