perl - 从多行变量中删除最后一行

标签 perl text expect text-manipulation

如何从多行变量中删除几行?

我从 Expect 那里得到了这类东西,需要稍微整理一下

$var='

total 20
drwxr-xr-x 5 drew.jess users 4096 2013-01-22 15:51 bash
drwxr-xr-x 2 drew.jess users 4096 2011-11-11 10:37 diff
drwxr-xr-x 8 drew.jess users 4096 2012-02-14 09:09 expect
drwxr-xr-x 3 drew.jess users 4096 2011-10-06 11:05 perl 
drwxr-xr-x 3 drew.jess users 4096 2013-02-07 13:10 python
drew ~ $

';

那些空行代表了我所拥有的。理想情况下,我想让 $var 看起来像这样:

$var='
total 20
drwxr-xr-x 5 drew.jess users 4096 2013-01-22 15:51 bash
drwxr-xr-x 2 drew.jess users 4096 2011-11-11 10:37 diff
drwxr-xr-x 8 drew.jess users 4096 2012-02-14 09:09 expect
drwxr-xr-x 3 drew.jess users 4096 2011-10-06 11:05 perl 
drwxr-xr-x 3 drew.jess users 4096 2013-02-07 13:10 python
';

我应该澄清一下;对我来说这个问题的重要部分是删除以下行:

drew ~ $

空白,我想我可以应付。

最佳答案

您始终可以使用正则表达式替换:

$var =~ s/^\s*$//gm;

\s* 将匹配换行符,但也会匹配您可能不想要的其他空格。 ^$ 以及行 anchor 的开头和结尾。 /m 修饰符允许 anchor 在字符串内部、行的开头/结尾处(例如换行符处)进行匹配。

关于perl - 从多行变量中删除最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14894235/

相关文章:

java - 使用类读取txt文件

javascript - 如何让我的文本在 Unity 中显示我的分数?

linux - Bash:我无法在双 while 循环中运行 eval 命令

perl - 为什么我无法在 Ubuntu 18.04 上安装 Perl Net-SNMP

perl - 使用 Perl IPC::Open3 捕获输出、错误和退出代码在较新的 Perl 中失败

PDF 低级 : Text Rendering

python - Telnetlib、字节串和 "invalid escape sequence"

perl - Moose OOP 还是标准 Perl?

perl - 清理庞大的 Perl 代码库

linux - 我的期望脚本关闭得太快