我正在尝试使用正则表达式模式替换来用制表符替换 md5sum 输出中的所有空格,并翻转正常的 md5sum 输出(fingerprint<space>/path/to/file)
,使其首先打印 /path/to/file,然后在输出中打印 md5 指纹到 STDOUT。我让它工作得很好,但由于某种原因,并不是我所有的空格都转换为制表符,正如您在此示例输出中看到的那样(参见第 4 项的 ps 项):
/bin/pidof 7b6aa27625786df26cd2511a6ccb8ec6
/bin/ping 120d994f6bd6e05e10c7aa4ffeb157b9
/bin/ping6 6578368ea1a280524ad5c944e8de825f
/bin/ps a68ff229e6c54ffa71d3de956395af5c
/bin/pwd a30c8ea470134ba60d9008ca5723c556
/bin/rbash 83f4aacf3157bfab413d009f48980e61
代码
#!/usr/bin/perl -w
foreach $arg (@ARGV) {
push (@md5, `md5sum $arg`);
}
foreach $entry (@md5) {
$entry =~ s/(^.*) +(.*$)/$2\t$1/;
print $entry . "\n";
}
我创建了一个包含 4 个名为 a、b、c 和 d 的空白文本文件的示例目录,并运行了我的 perl 脚本,它运行良好。是什么赋予了?
** 测试目录中的良好输出*
host{user}114: ls
a b c d mymd5.pl
host{user}115: ./mymd5.pl *
a d41d8cd98f00b204e9800998ecf8427e
b d41d8cd98f00b204e9800998ecf8427e
c d41d8cd98f00b204e9800998ecf8427e
d d41d8cd98f00b204e9800998ecf8427e
mymd5.pl 719e2f8f878077ae3ef037369eb38e48
host{user}116: