如何从原始数据文件中提取字符串(卡住)

时间:2015-06-10 03:31:25

标签: regex perl

我有一个原始数据文本文件,我正在编写一个perl脚本来从中提取字符串。我正在尝试获取结果只有UFLEX-06的计算机名称,但是,我得到Computer Name: UFLEX-06Computer Name后面的标签间距)。

这是文本文件包含的内容:

Computer Info: Computer Name: UFLEX-06 Computer is external to Teradyne. Computer IP Address(es):

这是我迄今为止在perl脚本中所做的事情:

use strict;
use warnings;

my $filename = 'IGXLEventLog.3.17.2015.20.25.12.625.log';
open(my $fn, '<', $filename) or die "Could not open file '$filename' $!";

our %details;

while(my $row = <$fn>)
{
    chomp $row;

    if($row =~ /Computer Name:/i)
    {
        my $cp_line;
        do
        {
            $cp_line .= $row;
        }while($row !~ /Computer Name:/);

    #Remove
    $cp_line =~ /Computer Name:/s;

    my @String = split(/Computer Name:/, $cp_line);

    #Assigning array elements to hash array
    $details{cp_line} = $String[0];

    print $details{cp_line};
    }
}

我是Perl的新手,如果有任何明显的错误,请原谅我。我的想法是使用split,以便删除Computer Name:。对此有何帮助?

2 个答案:

答案 0 :(得分:1)

我真的不遵循你想用你自己的代码做的事情,但这是必要的

use strict;
use warnings;

my $filename = 'IGXLEventLog.3.17.2015.20.25.12.625.log';

open my $fh, '<', $filename or die "Could not open file '$filename': $!";

while ( <$fh> ) {
    if ( /Computer Name:\s*(\S+)/i ) {
        print $1, "\n";
    }
}

答案 1 :(得分:0)

您可以使用正则表达式捕获这样的组:

    MeshFilter filter;
    MeshRenderer renderer;
    Mesh mesh;
 void Start(){
            gameObject.AddComponent<MeshFilter>();
            Mesh mesh = gameObject.GetComponent<MeshFilter> ().mesh;
            mesh.Clear();
            mesh.vertices = new Vector3[] {new Vector3(0,0,0), new Vector3(0,1,0), new Vector3(1,1,0)};
            mesh.uv = new Vector2[] {new Vector2(0,0), new Vector2(0,1), new Vector2(1,1)};
            mesh.triangles = new int[] {0,1,2};
        }

然后从群组中获取内容

<强> Working demo

我不擅长Perl,但我认为您可以使用以下代码并根据您的需求进行调整:

app.use(express.static(path.join(__dirname, 'xyz')));