sed encontrar linha no arquivo e remover caracteres

0

Eu tenho um arquivo que contém linhas como esta

proto udp
.
.
.
..
server 10.10.8.0/24 255.255.255.0

Eu preciso de uma maneira de remover somente / 24 deste servidor de linha 10.10.8.0/24 255.255.255.0 tornar-se

server 10.10.8.0 255.255.255.0

considerando que esta linha é variável, mas a única coisa constante é a / pode ser assim

server 198.196.178.0/8 255.0.0.0

então eu preciso de uma maneira de remover apenas / 8 desta linha para ficar assim

server 198.196.178.0 255.0.0.0
    
por Khalid Abo El MaGd 16.03.2016 / 10:35

1 resposta

0

Usando o GNU sed com grupos capturados:

sed -r 's_^(server\s+([^.]+.){3}[0-9]{1,3})/[0-9]+(.*)__' file.txt

Para editar o arquivo, use -i option:

sed -ri 's_^(server\s+([^.]+.){3}[0-9]{1,3})/[0-9]+(.*)__' file.txt

Exemplo:

% sed -r 's_^(server\s+([^.]+.){3}[0-9]{1,3})/[0-9]+(.*)__' <<<'server 10.10.8.0/24 255.255.255.0'
server 10.10.8.0 255.255.255.0

% sed -r 's_^(server\s+([^.]+.){3}[0-9]{1,3})/[0-9]+(.*)__' <<<'server 198.196.178.0/8 255.0.0.0' 
server 198.196.178.0 255.0.0.0
    
por 16.03.2016 / 10:44