Scripting 如何在awk脚本中嵌入参数?

Scripting 如何在awk脚本中嵌入参数?,scripting,awk,Scripting,Awk,这就是这两个问题的演变,以及 就我自己的学习而言,我正试图用下面的代码完成另外两件事: 我如何将'-F'部分折叠到脚本本身中,而不是使用myscript-F、file_to_过程调用脚本? 如何初始化一个变量,使我只分配一个值,而忽略后续的匹配?您可以从脚本中看到,我在每个规则中解析秒和微秒,我希望保留秒的第一个赋值,以便从printf语句中的后续匹配中减去它 #!/usr/bin/awk -f /DIAG:/ { lbl = $3; sec = $5; usec =

这就是这两个问题的演变,以及

就我自己的学习而言,我正试图用下面的代码完成另外两件事:

我如何将'-F'部分折叠到脚本本身中,而不是使用myscript-F、file_to_过程调用脚本? 如何初始化一个变量,使我只分配一个值,而忽略后续的匹配?您可以从脚本中看到,我在每个规则中解析秒和微秒,我希望保留秒的第一个赋值,以便从printf语句中的后续匹配中减去它

#!/usr/bin/awk -f
/DIAG:/  {
    lbl = $3;
    sec = $5;
    usec = $6;
    /Test-S/ {
        stgt = $7;
        s1  = $30;
        s2  = $31;
    }
    /Test-A/ {
        atgt = $7;
        a = $8;
    }
    /Test-H/ {
        htgt = $7;
        h = $8;
    }
    /Test-C/ {
        ctgt = $7;
        c = $8;
    }
}
/WARN:/ {
    sec = $4;
    usec = $5;
    m1 = $2;
    m2 = $3
}
{
 printf("%16s,%17d.%06d,%7.2f,%7.2f,%7.2f,%7.2f,%7.2f,%7.2f,%7.2f,%7.2f,%7.2f,%5d,%5d\n", lbl, sec, usec, stgt, s1, s2, atgt, a, htgt, h, ctgt, c, m1, m2)
}
使用BEGIN子句:

BEGIN { FS = ","
    var1 = "text"
    var2 = 3
    etc.
}
这是在行处理语句之前运行的。FS是字段分隔符

如果您想要解析一个值并保留它,这取决于您是只想要第一个值还是想要前一个值

要保留第一个:

FNR==1 {
    keep=$1
}
要保留上一个:

BEGIN {
    prevone = "initial value"
}

/regex/ {
    do stuff with $1
    do stuff with prevone
    prevone = $1
}
使用BEGIN子句:

BEGIN { FS = ","
    var1 = "text"
    var2 = 3
    etc.
}
这是在行处理语句之前运行的。FS是字段分隔符

如果您想要解析一个值并保留它,这取决于您是只想要第一个值还是想要前一个值

要保留第一个:

FNR==1 {
    keep=$1
}
要保留上一个:

BEGIN {
    prevone = "initial value"
}

/regex/ {
    do stuff with $1
    do stuff with prevone
    prevone = $1
}

我希望我能为简短和切中要害多出点分数。做得很好。我希望我能为简短和切中要害加分。干得好。