如何在Perl中每个非空行的开头和结尾添加字符?

Phi*_*hil 0 regex perl

我想用这个:

perl -pi -e 's/^(.*)$/\"$1\",/g' /path/to/your/file
Run Code Online (Sandbox Code Playgroud)

用于在文本文件中的每一行的末尾添加"在行的开头".问题是有些线条只是空行,我不希望这些行被改变.任何想法如何修改上面的代码或可能完全不同的做法?

Sch*_*ern 9

其他人已经回答了正则表达式语法问题,让我们来看看这种风格.

s/^(.*)$/\"$1\",/g
Run Code Online (Sandbox Code Playgroud)

这个正则表达式患有"倾斜牙签综合症",///让你的大脑出血.

s{^ (.+) $}{ "$1", }x;
Run Code Online (Sandbox Code Playgroud)

使用平衡分隔符,/ x修饰符来消除不必要的后退,使得正则表达式更容易阅读.此外,/ g是不必要的,因为这个正则表达式每行只会匹配一次.


Woo*_*ble 7

perl -pi -e 's/^(.+)$/\"$1\",/g' /your/file
Run Code Online (Sandbox Code Playgroud)

.*匹配0个或更多字符; .+匹配1个或更多.

您可能还希望替换.+with .*\S.*以确保仅引用包含非空白字符的行.