Alterar último octeto em IP awk

0

Suponha que tenha o seguinte arquivo

Somestring 1.2.3.4 more charachters and strings
Somestring 1.2.3.5 more charachters and strings
Somestring 1.2.3.6 more charachters and strings

Eu quero mudar o último octeto no IP:

Somestring 1.2.3.x more charachters and strings
Somestring 1.2.3.x more charachters and strings
Somestring 1.2.3.x more charachters and strings

Como posso conseguir isso no awk ou no sed?

O que eu fiz é:

awk '{match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/); ip = substr($0,RSTART,RLENGTH-1); print ip }' file  

mas isso só imprime o ip e não está totalmente correto.

Além disso, tentei:

awk '{split($2,ip,".") gsub(ip[2],"x"); print}' 

mas isto também não está correto, já que substitui o primeiro octeto também.

Somestring x.2.3.x more charachters and strings
Somestring x.2.3.x more charachters and strings
Somestring x.2.3.x more charachters and strings

Obrigado pela ajuda

    
por holasz 25.04.2018 / 15:29

3 respostas

1

Usando sed para isso:

$ sed -E 's/ (([0-9]{1,3}\.){3})[0-9]{1,3} / x /' file
Somestring 1.2.3.x more charachters and strings
Somestring 1.2.3.x more charachters and strings
Somestring 1.2.3.x more charachters and strings

Isso procura um espaço seguido por três conjuntos de [0-9]{1,3}\. (um número de um a três dígitos seguido por um ponto), que é capturado em . Em seguida, também substituímos um último conjunto de [0-9]{1,3} e um espaço final. Tudo isso é substituído por ␣x␣ , em que é o primeiro grupo de três números e pontos.

    
por 25.04.2018 / 15:37
1

Se você realmente quiser fazer isso em awk , precisará ancorar a expressão e só precisará de sub não gsub , já que é uma substituição única, por exemplo.

awk '{sub(/\.[0-9][0-9]?[0-9]?$/,".x",$2)} 1' input
Somestring 1.2.3.x more charachters and strings
Somestring 1.2.3.x more charachters and strings
Somestring 1.2.3.x more charachters and strings

Com algumas implementações, você pode usar ERE [0-9]{1,3} para a repetição de dígitos.

    
por 25.04.2018 / 15:42
1
awk '{sub(/.$/,"x",$2)}1' file

Somestring 1.2.3.x more charachters and strings
Somestring 1.2.3.x more charachters and strings
Somestring 1.2.3.x more charachters and strings
    
por 26.04.2018 / 04:31

Tags