2014-03-06 50 views
1

你好之间:我找或者通过AWK,Perl的修改只有一个分离器在下面的文本之间或sed的如何修改单个分隔文本

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

得到输出

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

如何修改第n个分隔符?在此先感谢

回答

10

您可以使用此sed

sed 's/,/-/5' yourfile 
+0

+1不错!我总是忘记sed有这个数字参数,非常适合这种情况。 –

+0

@EdMorton是的,尽管它是'GNU'的扩展。 –

+0

谢谢@sat!简单而清脆! – harsh

1

我不能打败SED,但Perl的命令做了你问什么

perl -aF, -pe"splice @F,4,2,qq{$F[4]-$F[5]};$_=join ',',@F" myfile 
0

或用Perl

my @array = ('a','b','c','d','e','f','g'); 
$array[4] = $array[4] . "-" . $array[5]; 
splice(@array, 5, 1); 
1

一般来说,perl不支持对s///操作进行计数,并对其进行不同的选择每一个,但通过使用/e标志,你可以自己做。

my $n = 0; 
$string =~ s/,/++$n == 5 ? "-" : ","/eg; 

将保持替换发生的次数,并在第五次进行不同的更改。

+0

谢谢大家......它真的很高兴有一个问题的多个解决方案。在perl和sed中肯定了解了一些技巧。 – harsh