我有一个文件的时间戳格式为10:24:23 我想要做的是拆分这些时间戳,但拆分后删除新的行字符。我想要的输出是102423,但我目前得到的是: 10 \ N24 \ N23 \ n
这是我正在运行的脚本:
#!/usr/bin/perl
use warnings;
use strict;
my $cmd = `cat test.txt |awk {'print \$2')`;
my @array = $cmd;
my @values = split(':', $cmd);
print @values;
for (@values) {
chomp $_;
if ($_ == 102423) {
print "Hello\n";
}
}
当我打印出@values数组时,我看到了我想要的内容,'102423'
但是当我尝试if
比较时,我得到一个错误,说我的变量不是数字。错误显示如下:“10 \ n24 \ n23不是数字”
感谢您抽出宝贵时间 欢呼声。
答案 0 :(得分:2)
在您的代码中,您获取所有时间戳,然后将它们拆分为冒号,这会创建无效值:秒+换行符+以下时间戳的小时数。
逐行处理文件。无需从Perl调用awk
。打开文件并使用(split)[1]
获取第二列(并删除尾随换行符)。
#!/usr/bin/perl
use warnings;
use strict;
open my $IN, '<', 'test.txt' or die $!; # Open the file.
while (<$IN>) { # Process it line by line.
my $timestamp = (split)[1]; # Get the second column.
$timestamp =~ tr/://d; # Remove colons.
if (102423 == $timestamp) {
print "Hello\n";
}
}