Você não pode usar a substituição de parâmetro do shell dentro de um programa awk
.
Para remover o primeiro bit da sexta coluna, use sub()
:
bjobs -w | awk 'NR > 1 { sub("^[^*]*[*]", "", $6); print $1, $6 }'
Isso modificaria o sexto campo removendo o bit até o *
antes de imprimi-lo. A expressão regular ^[^*]*[*]
corresponde a qualquer número de caracteres que não sejam *
no início da cadeia e, em seguida, *
. Isso é então substituído pela string vazia.
O acima transforma a saída da pergunta em
821213 pirineus
823954 pirineus4
824083 collserola2
824297 collserola10
824305 collserola5
NOTA: Todas as variações abaixo (incluindo a sed
solution) assumem que existe um *
no sexto campo . O acima funcionaria mesmo se não houvesse.
Outra maneira de fazer isso é dividir o sexto campo no *
e imprimir a segunda parte:
bjobs -w | awk 'NR > 1 { split($6, a, "[*]"); print $1, a[2] }'
Uma terceira maneira de fazer isso é usar os dois espaços em branco e *
como o delimitador de campo (observe a alteração no número do campo):
bjobs -w | awk -F "[[:blank:]*]+" 'NR > 1 { print $1, $7 }'
Usando sed
:
bjobs -w | sed -nE 's/^([[:alnum:]]+).*\*([[:alnum:]]+).*/ /p'