Como a "tag" é a parte depois do penultimate _
, você pode simplesmente usar isso como um separador de campo:
$ awk -F_ '{if($(NF-1)~/LY1/){print $(NF-1)}else{print}}' file
LY1-1250
LY1-1250
LY1-1250
LY1-1250
Ou, para usá-lo como uma variável:
awk -F_ '{if($(NF-1)~/LY1/){tag=$(NF-1); print tag}else{print}}' file
Eu não entendo por que você tinha seu código em um bloco BEGIN{}
, que seria executado apenas uma vez e antes de qualquer linha ser lida, então NF
não seria definido.
De qualquer forma, para o caso geral, a maneira de salvar uma substring em uma variável no awk é usar substr
ou sub
. Então, você também poderia ter feito algo como:
$ awk '{
if($NF~/LY1/){
tag=$NF;
sub(/.*LY1/,"LY1",tag);
sub(/_[^_]*$/,"",tag);
print tag
}
else{ print } }' file
LY1-1250
LY1-1250
LY1-1250
LY1-1250