Regex 匹配字符串结尾的Perl reg表达式不起作用
不确定我的perl脚本中出了什么问题。无法使用正则表达式匹配行尾Regex 匹配字符串结尾的Perl reg表达式不起作用,regex,perl,Regex,Perl,不确定我的perl脚本中出了什么问题。无法使用正则表达式匹配行尾 [rmdev01@inches-rmdev01 SISPortal]$ forever logs info: Logs for running Forever processes data: script logfile data: [0] server /home/rmdev01/.forever/WusC.log data: [1] Server /home/rmdev01/.forever/2
[rmdev01@inches-rmdev01 SISPortal]$ forever logs
info: Logs for running Forever processes
data: script logfile
data: [0] server /home/rmdev01/.forever/WusC.log
data: [1] Server /home/rmdev01/.forever/2hai.log
脚本:
[rmdev01@inches-rmdev01 SISPortal]$ cat forever.pl
#! /usr/bin/perl
@logs=`forever logs`;
chomp(@logs);
foreach my $log (@logs)
{
print "checking log at end of string $log\n";
if ($log =~ /log$/)
{
print "$log\n";
}
}
脚本的输出:
[rmdev01@inches-rmdev01 SISPortal]$ ./forever.pl
checking log at end of string info: Logs for running Forever processes
checking log at end of string data: script logfile
checking log at end of string data: [0] server /home/rmdev01/.forever/WusC.log
checking log at end of string data: [1] Server /home/rmdev01/.forever/2hai.log
字符串结尾之前似乎有一些空格/制表符(
chomp()
仅删除换行符,而不删除其他空格字符)
允许那些尾随的空白字符(并可能通过使用a避免类似Blog
的匹配):
字符串结尾之前似乎有一些空格/制表符(
chomp()
仅删除换行符,而不删除其他空格字符)
允许那些尾随的空白字符(并可能通过使用a避免类似Blog
的匹配):
chomp
只删除换行符[1],而后面显然还有其他空格(例如回车符)
s/\s+\z/
删除所有尾随空格,因此使用该选项通常比使用chomp
更好
#!/usr/bin/perl
use strict;
use warnings qw( all );
for (`forever logs`) {
s/\s+\n//;
print if /log$/; # Or /\blog$/ as Tim Pietzcker suggested.
}
$/
的值是多少。但是$/
从包含换行符开始chomp
只删除换行符[1],而后面显然还有其他空格(例如回车符)
s/\s+\z/
删除所有尾随空格,因此使用该选项通常比使用chomp
更好
#!/usr/bin/perl
use strict;
use warnings qw( all );
for (`forever logs`) {
s/\s+\n//;
print if /log$/; # Or /\blog$/ as Tim Pietzcker suggested.
}
$/
的值是多少。但是$/
从包含换行符开始换行前会有空格吗?请尝试
/log\s*$/
,看看错误是否仍然存在。@TimPietzcker:成功了。但是为什么在chomp之后还会有空格呢?据我所知,chomp()
只删除换行符,而不删除其他空格字符。具体来说,chomp
会删除$/
的值,默认情况下这是换行符。换行符之前会有空格吗?请尝试/log\s*$/
,看看错误是否仍然存在。@TimPietzcker:成功了。但是为什么在chomp之后还会有空格。据我所知,chomp()
只删除换行符,而不删除其他空格字符。具体地说,chomp
删除了$/
的值,默认情况下这是换行符。