使用 sed 的未终止地址正则表达式



我有一个在Linux上运行的Perl脚本,我在下面的行中收到一个错误未终止的地址正则表达式。

cat $filename | sed ‘sed /^\s*$/d’ | wc -l

如何解决此问题?

看起来您想从文件中删除仅空格行。 sed 语法为:

/^s*$/d

你要传递给 sed 的是

sed /^\s*$/d

顺便说一下,这是一种替换形式 s/find/replace/,但使用 e 而不是斜杠。 (您几乎可以在那里使用任何字符。由于没有其他e来终止搜索和替换模式,因此 sed 会引发错误。

您需要的是:

% cat $filename | sed '/^s*$/d' | wc -l

或者没有猫:

% sed '/^s*$/d' $filename | wc -l

尝试使用正则表达式选项 -E

sed -E '/^s*$/d' $filename | wc -l

最新更新