【问题标题】:How to grep string and assign it to a variable in Perl如何grep字符串并将其分配给Perl中的变量
【发布时间】:2018-07-24 21:38:15
【问题描述】:

我有一个包含以下详细信息的文件;

文件名:allappsclus

cont:i-02dd208bf1d81c254
rs:i-0098ad0b59b7fe7cf

我想在关联的cont 名称中使用i-XXX"= 的值并将其分配给另一个变量。

如果运行我的代码并得到输出,它是

test-1.1.0.0
1insideif-CNS
use strict;
use warnings;

use Data::Dumper;

my $jupyter    = 0;
my $controller = 0;
my $rstudio    = 0;
my $zeppelin   = 0;

my $fh= '/tmp/allappsclus';

open my $fh2, '<', $fh  or die "Cannot open file: $!\n";

while ( <$fh2> ) {

    if ( $_ =~ /jup/ ) {
        $jupyter = 1;
    }
    elsif ( $_ =~ /con/ ) {
        $controller = 1;
    }
    elsif ( $_ =~ /rs/ ) {
        $rstudio = 1;
    }
    elsif ( $_ =~ /zep/ ) {
        $zeppelin = 1;
    }
}

print "test-$rs.$con.$jup.$zep\n";

if ( $zepeq '0' && $jup eq '0' && $con eq '1' && $rs eq '1' ) {
    print "insideif-CNS";
}
else {
    print "do nothing";
}

close $fh;
close $fh2;

现在我想在输出中打印值 i-02dd208bf1d81c254 而不是 CNS

【问题讨论】:

  • 这个问题缺少很多细节,比如你所说的 i-XXX 是什么意思,cont 等。请提供更多信息,添加关于你尝试过但没有奏效的细节。跨度>
  • 通过编写代码。
  • 我有文件并试图在关联的“cont”变量中获取“:”之后的值。
  • 副手 我能想到大约 10 种使用 perl 的方法。我还可以告诉你一个事实,在 google 上进行一次搜索就会显示出满是关于如何执行此操作的结果的页面。

标签: perl


【解决方案1】:
$myStr = "cont:i-02dd208bf1d81c254 rs:i-0098ad0b59b7fe7cf";

if ($myStr =~ /cont:([^ ]+)/) # match the full pattern with the value you required
{
   $controller=1;
   $cont = $1;    # assign required value to a variable
}
print $cont;      # print the variable

这可能对你有用。

【讨论】:

  • 谢谢,如果我将使用单独的 perl 文件,它就可以工作,但我想添加到我现有的代码中以将输出中的 CNS 替换为“i-02dd208bf1d81c254”。你能帮我怎么做到这一点吗?而且文件正在运行,因此每次运行时值都会改变(在“cont”值之后,即“i -02dd208bf1d81c254”)
猜你喜欢
  • 2013-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 2020-11-17
  • 2019-08-19
相关资源
最近更新 更多