gpt4 book ai didi

perl - 在perl中使用system()运行 "cat"命令创建所需的文件,但它是空白的

转载 作者:行者123 更新时间:2023-12-03 05:41:23 25 4
gpt4 key购买 nike

我想通过 Perl 脚本运行两个 shell 命令,该脚本使用我的模式搜索创建 find.txt 文件。以下是 shell 脚本,它运行良好,并在从 shell 运行时给出结果:

cat "/home/atsuser/Users/srittamp/ns.conf" | grep "add\|set\|enable" | awk '{print $2}' > find.txt
grep -o '\w*' find.txt | sort | uniq > find.txt

但是,当我使用 perl 的 system 命令执行相同操作时,我得到一个空白的 find.txt。以下是我的 Perl 脚本:

#!/usr/bin/perl

use strict;
use warnings;

my $conf_file = "/home/atsuser/Users/srittamp/ns.conf";
my $find_file = "/home/atsuser/Users/srittamp/find.txt";


system("cat \"$conf_file\" | grep \"add\\|set\\|enable\" | awk '{print \$2}' > /home/atsuser/Users/srittamp/find.txt");
system("grep -o \'\\w*\' $find_file | sort | uniq > /home/atsuser/Users/srittamp/find.txt");

有人可以帮我解决这个问题吗?

最佳答案

如何在 Perl 中做到这一点:

#!/usr/bin/env perl

use strict;
use warnings;

use charnames qw( :full :short );
use English qw( -no_match_vars ) ; # Avoids regex performance penalty

my $conf_file = "/home/atsuser/Users/srittamp/ns.conf";
my $find_file = "/home/atsuser/Users/srittamp/find.txt";

# cat "/home/atsuser/Users/srittamp/ns.conf" | grep "add\|set\|enable" | awk '{print $2}' > find.txt
# grep -o '\w*' find.txt | sort | uniq > find.txt

# save unique items
my %list = ();

open my $in_fh, '<', $conf_file or die "could not open $conf_file: $OS_ERROR\n";
while( my $line = <$in_fh> ){

# grep "add\|set\|enable"
if( $line =~ m{ add\|set\|enable }msx ){

# awk '{print $2}'
my @fields = split "\N{SPACE}", $line;
$list{ $fields[1] } = 1;

}
}
close $in_fh or die "could not close $conf_file: $OS_ERROR\n";

# output the sorted list
open my $out_fh, '>', $find_file or die "could not open $find_file: $OS_ERROR\n";
for my $item ( sort keys %list ){
print {$out_fh} "$item\n" or die "could not print to $find_file: $OS_ERROR\n";
}
close $in_fh or die "could not close $find_file: $OS_ERROR\n";

关于perl - 在perl中使用system()运行 "cat"命令创建所需的文件,但它是空白的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17545221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com