所以我尝试像这样在行的开头替换空白。
原始:
this
is
\tsome
text
我想要什么:
+this
+is
+
+some
+ text
我试图使用此正则表达式来做到这一点:
echo -e 'this\n is\n\n\tsome\n text' |
perl -wpe 's/^\s?(.*)/+$1/'
但这是结果:
+this
+is
++some
+ text
因此,我根本没有任何文字的行未得到正确处理。或者更确切地说,我不明白为什么会这样。
知道为什么吗?
谢谢!
答案 0 :(得分:3)
您要替换换行符。一种解决方案是在比赛前将其删除,然后再添加。可以使用-l
完成。
perl -ple's/^\s?/+/'
或者,您可以从匹配的字符集中删除换行符。
perl -pe's/^[^\S\n]?/+/'
如果还可以保留VT,FF,CR,LINE SEPARATOR和PARAGRAPH SEPARATOR,可以将以上内容简化为以下内容:
perl -pe's/^\h?/+/'
答案 1 :(得分:2)
正如评论中的粘滞指出的那样,我只需要用\ h替换\ s。 解决了!