0

在这方面需要一些帮助这是我拥有和想要做的这是我的文件名为 file.txt

Sequences   times       Ip1     ip2     Protocol        info
1       2   10.18.19.12 12.29.29.18 udp     hsahdsdd
2       4   10.13.15.67 12.28.29.19 tcp     blabla
3       7   10.12.27.28 12.17.281.19    udp     hkkkljkl

我想(使用 awk)

  • 计算我有多少行并打印该信息 + 在名为 protocol.tx 的输出文件中找到的所有协议名称
  • 计算 IP1 的行数并将所有 Ip 的列表添加到另一个名为 ip.txt 的输出文件中

谢谢在这里我尝试

#!/usr/bin/perl
$fname = $ARGV[0];
open(FILE, $fname) || die ("cant read \n");
while($ligne=<FILE>)
{
chop ($ligne);
my ($No, $time, $Ip1, $Ip2, $Proto, $info) = split (/ /, $ligne_);
}
system("awk '{print \$6}' $fname");
system ("awk 'END {print NR}' $fname") >line.txt;
4

1 回答 1

3

这种形式system需要一个shell命令,所以

use autodie qw( system );
use String::ShellQuote qw( shell_quote );

system(shell_quote('awk', 'END {print NR}', $fname) . ">line.txt");

但是awk在 Perl 中使用来完成这项微不足道的工作是很愚蠢的。

于 2013-04-14T02:34:29.697 回答