sed + como minimizar a linha de canos sed e fazer o sed em um tiro

0

É possível fazer o seguinte com um comando sed sem outra linha de cano sed?

sed s"/obbama/trump/" | sed s'/"//g' | sed s'/://g' 

O sed como descrito aqui precisa substituir a palavra obbama por trump e remover os caracteres '"e': '

    
por yael 03.01.2018 / 09:09

2 respostas

3

Na página de manual sedix POSIX

The script shall be obtained from either the script operand string or a combination of the option-arguments from the -e script and -f script-file options.

O primeiro ("a string do operando script") é essencialmente tratado pela outra resposta aqui (separação ponto-e-vírgula).

com -e :

$ sed -e "s/obbama/trump/" -e 's/"//g' -e 's/://g' 

com -f :

$ cat sed-script
s/obbama/trump/
s/"//g
s/://g
$ sed -f sed-script

BTW, é mais convencional colocar o "s" dentro das aspas em cada uma das diretivas de substituição que eu fiz com o exemplo -e .

    
por 03.01.2018 / 09:12
3

sed é uma linguagem de script que, como sh ou awk ou perl ou qualquer outra, permite várias instruções dentro do script. Você separa cada instrução sed com um ponto-e-vírgula ; ou com uma nova linha. por exemplo,

sed 's/obbama/trump/; s/"//g; s/://g'

ou

sed 's/obbama/trump/
s/"//g
s/://g'

O caractere de espaço após o ; é opcional, mas o IMO torna o script sed mais legível.

    
por 03.01.2018 / 09:12

Tags