次のような行があります。
,,,,,,,,,foo,bar
,,,,,x,,blabla,
regexを使用すると、行頭のカンマのみを同じ数のスペースに置き換えることができますか?
sed
例:
$ echo ',,,,,,,,,foo,bar
,,,,,x,,blabla,' | sed ':r;s/^\(,*\),/\1 /;tr'
foo,bar
x,,blabla,
肯定的な後読みで 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'
とperl
:
perl -pe 's/^,+/q{ } x length $&/e' <<< ',,,,,,,,,foo,bar'