GREP:有没有一种方法可以使用grep在文件名和模式之间插入文本?

时间:2018-08-02 00:53:47

标签: shell perl unix grep

我有grep --color -EH "^([^,]*\,){3}5" try.csv

及其输出是这样的:

try.csv:410,30151010,K,5001,,,,,,,,,,,,,,,,,,,,,,,,,,,,,512
try.csv:652,20151010,K,5001,,,,,,,,,,,,,,,,,,,,,,,,,,,,,41
try.csv:109,30151010,R,5005,,,,,,,,,,,,,,,,,,,,,,,,,,,,,455

我尝试了grep --color -EH "^([^,]*,){3}5" try.csv | perl -ne 'print ",$_"'

但是输出看起来像这样:

,try.csv:410,30151010,K,5001,,,,,,,,,,,,,,,,,,,,,,,,,,,,,512
,try.csv:652,20151010,K,5001,,,,,,,,,,,,,,,,,,,,,,,,,,,,,41
,try.csv:109,30151010,R,5005,,,,,,,,,,,,,,,,,,,,,,,,,,,,,455

预期输出:

try.csv:,410,30151010,K,5001,,,,,,,,,,,,,,,,,,,,,,,,,,,,,512
try.csv:,652,20151010,K,5001,,,,,,,,,,,,,,,,,,,,,,,,,,,,,41
try.csv:,109,30151010,R,5005,,,,,,,,,,,,,,,,,,,,,,,,,,,,,455

预先感谢,顺便说一下,我对Perl和Shell还是很陌生的。 即时搜索CSV文件。

1 个答案:

答案 0 :(得分:0)

您可以使用sed插入逗号,

$ grep --color -EH "^([^,]*\,){3}5" try.csv | sed 's/:/&,/'

s/:/&,/:特殊字符&在替换中是指字符串中匹配的部分。并且您可以在&后面添加一个逗号以满足您的要求。