I want to use awk for printing a match of some pattern, only if it is the last line of the file before some constant text.
Nesse caso, tente isto:
awk -F= '/constant text/ && name=="c"{print value} {name=$1;value=$2}' file
Exemplos
$ cat file1
a=1
b=2
c=3
...constant text...
$ awk -F= '/constant text/ && name=="c"{print value} {name=$1;value=$2}' file1
3
$ cat file2
a=1
c=3
b=2
...constant text...
$ awk -F= '/constant text/ && name=="c"{print value} {name=$1;value=$2}' file2
$
Como funciona
-
-F=
Isso diz
awk
para usar=
como o separador de campo. Dessa forma, podemos separar o nome e o valor de campos comoa=1
ouc=3
. -
/constant text/ && name=="c"{print value}
Se chegarmos a uma linha com
constant text
ename
(como a última definida na linha anterior) serác
e, em seguida, imprimirvalue
. -
name=$1;value=$2
Para a linha atual, salve o primeiro campo como
name
e o segundo campo comovalue
.