2014-03-06 74 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