如何替换行开头的集合中的所有字符?

时间:2012-08-26 20:46:33

标签: regex perl sed

我有这样的行:

,,,,,,,,,foo,bar
,,,,,x,,blabla,

使用 regex ,是否可以仅使用相同数量的空格替换行开头的逗号,如果是怎么样?

3 个答案:

答案 0 :(得分:4)

sed示例:

$ echo ',,,,,,,,,foo,bar
,,,,,x,,blabla,' | sed ':r;s/^\(,*\),/\1 /;tr'
         foo,bar
     x,,blabla,

答案 1 :(得分:2)

使用Java,具有积极的外观:

String s = ",,,,,,,,,foo,bar";
System.out.println(s.replaceAll("(?<=^,+),", " "));
// '         foo,bar'

使用Python:

> import re
> s = ',,,,,,,,,foo,bar'
> re.sub("^,+", lambda m: len(m.group(0)) * ' ', s)
'         foo,bar'

答案 2 :(得分:1)

使用perl

perl -pe 's/^,+/q{ } x length $&/e' <<< ',,,,,,,,,foo,bar'