你好之間:我找或者通過AWK,Perl的修改只有一個分離器在下面的文本之間或sed的如何修改單個分隔文本
a,b,c,d,e,f,g,,,,k,l,m
得到輸出
a,b,c,d,e-f,g,,,,k,l,m
如何修改第n個分隔符?在此先感謝
你好之間:我找或者通過AWK,Perl的修改只有一個分離器在下面的文本之間或sed的如何修改單個分隔文本
a,b,c,d,e,f,g,,,,k,l,m
得到輸出
a,b,c,d,e-f,g,,,,k,l,m
如何修改第n個分隔符?在此先感謝
您可以使用此sed
,
sed 's/,/-/5' yourfile
我不能打敗SED,但Perl的命令做了你問什麼
perl -aF, -pe"splice @F,4,2,qq{$F[4]-$F[5]};$_=join ',',@F" myfile
或用Perl
my @array = ('a','b','c','d','e','f','g');
$array[4] = $array[4] . "-" . $array[5];
splice(@array, 5, 1);
一般來說,perl不支持對s///
操作進行計數,並對其進行不同的選擇每一個,但通過使用/e
標誌,你可以自己做。
my $n = 0;
$string =~ s/,/++$n == 5 ? "-" : ","/eg;
將保持替換髮生的次數,並在第五次進行不同的更改。
謝謝大家......它真的很高興有一個問題的多個解決方案。在perl和sed中肯定了解了一些技巧。 – harsh
+1不錯!我總是忘記sed有這個數字參數,非常適合這種情況。 –
@EdMorton是的,儘管它是'GNU'的擴展。 –
謝謝@sat!簡單而清脆! – harsh