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
awkpara usar=como o separador de campo. Dessa forma, podemos separar o nome e o valor de campos comoa=1ouc=3. -
/constant text/ && name=="c"{print value}Se chegarmos a uma linha com
constant textename(como a última definida na linha anterior) seráce, em seguida, imprimirvalue. -
name=$1;value=$2Para a linha atual, salve o primeiro campo como
namee o segundo campo comovalue.