Tente substituí-los:
$ awk -F'.' 'sub(FS $(NF-2) FS $(NF-1) FS $NF,"")' <<<"www.cse.iitb.ac.in"
www.cse
Não sei por que isso funciona e seu método não, mas de acordo com este unix.com postar, esse é o caminho.
Eu tenho uma lista de domínios combinados e canalizados pelo grep com vários tamanhos, mas todos correspondem aos últimos três registros. Estou tentando produzir todos os subdomínios não qualificados.
Eu tenho:
awk -F'.' -v OFS='.' '{$(NF-3)=$(NF-2)=$(NF-1)=""; print $0}'
minha saída sai perdendo ...... na saída
Obrigado
Ao produzir a saída, awk
obedece ao valor atual de NF
. Se você quiser eliminar os três últimos campos, reduza apenas NF
por três, como por meio de NF-=3
:
awk -F. -v OFS=. '{NF-=3; print $0}'
Usando isso com sua entrada de amostra:
$ echo $'site.subdomain.xyz.com\nsite.sub.subdomain.xyz.com' | awk -F. -v OFS=. '{NF-=3; print $0}'
site
site.sub
Por acaso, um ponto, .
, não é um caractere de shell ativo. Então, não precisa de citar.