使用Perl根据每行的第一个字段处理文本文件

时间:2017-10-10 04:35:11

标签: scripting perl

我正在尝试编写一个读取以下格式文件的Perl脚本:

ATPG     TCD             tcd/T1, xxx/tcd/T2    
ATPG     INSTANCE        inst1/I1, xxx/inst2/I2, inst3/I3
ATPG     PATTERN         pat1/P1, pat2/P2
SIM      BLACKBOX        bb1/B1, bb2/B2

对于第一个字段中包含ATPG的每一行,它应该打印到输出文件。例如:

// TCD

read_core_description tcd/T1
read_core_description xxx/tcd/T2

// INSTANCE
add_core_instance  -instance inst1/I1  
add_core_instance  -instance xxx/inst2/I2   
add_core_instance  -instance inst3/I3

//PATTERN 
read_patterns pat1/P1  
read_patterns pat2/P2

SIM开头的其他行不会影响输出文件。我怎么能这样做呢?

1 个答案:

答案 0 :(得分:0)

在单行中,缩短说明

perl -anE'
    BEGIN { %d = (TCD => "read", INSTANCE => "add", PATTERN => "patterns") 
    if (shift@F eq "ATPG") { $n=shift@F; say "// $n"; say "$d{$n} $_" for @F }
' input.txt

通过将@F分割为空格来获得每行的-a,所以通过<select name="department" id="department-list" class="form-control" onChange="getTeams3(this.value);" multiple> <option value="MONGOOSEAHOY" selected>All departments</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> 的礼貌将其分成单词。

我建议阅读该语言的核心描述并亲自尝试。