Parece que você está dizendo que parte do que você não entende é a sintaxe do acionador de expressões regulares de awk
, que é a que deriva muito do seu poder. Para simplificar, o scaffolding de um script awk
pode ser descrito desta forma:
BEGIN {
Things to do before processing data
}
/needle/ {
Things to do when a record contains a match for the regex /needle/
}
expression {
Things to do for each record when the expression evaluates to true (i. e. nonzero)
}
{
Things to do for all input records
}
END {
Things to do after all records have been processed
}
Para expandir isso para as linhas de referência:
/^ORA-.*:|^PLS-.*:|^SP2-.*/ {
stuff
}
/^ORA-.*:|^PLS-.*:|^SP2-.*/
é uma expressão regular que corresponde a qualquer string que corresponda a qualquer um dos seguintes critérios:
- Começa com
ORA-
, com:
após zero ou mais caracteres subsequentes - Começa com
PLA-
, com:
após zero ou mais caracteres subsequentes - começa com
SP2-
O código nas chaves após essa expressão será executado em qualquer registro que corresponda.
/^ERROR/ {
stuff
}
Uma expressão regular mais simples que corresponde a qualquer string começando com ERROR
.
/\[.*\]\|Error.*/ {
stuff
}
Outro regex, desta vez correspondendo uma string começando com qualquer coisa com um par de chaves combinadas, ou qualquer coisa com a string Error
.
gsub("[[:space:]]+^B", "^B");
gsub("^B[[:space:]]+", "^B");
Estes substituirão qualquer série de caracteres correspondentes a um espaço em branco seguido por um caractere Ctrl + B no primeiro caso, ou a ordem inversa no segundo, com um simples < kbd> Ctrl + B . Lembre-se de que esse caractere de controle foi definido na sub-rotina BEGIN
como o separador de campo.