Pergunta sobre os múltiplos comandos do sed

1

é sed -e 'script' -e 'script' igual ao sed "script;script" ?

Além disso, esses múltiplos comandos operam durante uma varredura do arquivo? Ou será que, quanto mais scripts você colocar, mais varreduras / passagens do arquivo serão feitas? (um por script)

Como o sed é uma linguagem de script, estou inclinado para a teoria de múltiplas passagens ... Por exemplo, se você tiver sed "script;script" , é como ter um script sed como este:

script
script

Portanto, seria natural supor que tudo acontece de maneira processual.

Mas e quanto a -e 'script' -e 'script' ?

E o mais importante, existe uma maneira de dizer ao sed para executar apenas um passo, economizando ciclos de CPU valiosos em arquivos grandes? E se sed não puder fazer isso, existe outra maneira de fazer algo assim? (Talvez o awk seja mais adequado, por exemplo? Ect)

Obrigado por dedicar seu tempo para ajudar

    
por HashWizard 13.05.2017 / 20:59

1 resposta

3

  • Para cada linha de entrada, cada expressão / script é aplicado a ela por vez. O comando

    sed -e 's/apple/orange/g' -e 's/orange/red/g'
    

    substituiria todas as ocorrências da string apple e orange pela string red .

  • Existe apenas uma passagem através dos dados de entrada. sed lida com fluxos, é um editor de fluxo , e o fluxo de entrada nem precisa ser procurado.

O exemplo que você teve,

sed -e "script1" -e "script2"

é o mesmo que

sed "script1;script2"

que é o mesmo que

sed -f file1 -f file2

em que file1 contém script1 e file2 contém script2 , que é o mesmo que

sed -f file

onde file contém

script1
script2

ou

script1;script2

Se sed é adequado para sua tarefa, depende totalmente da tarefa. Assim como sed , awk não precisa analisar um arquivo ou fluxo de entrada mais de uma vez. Algumas tarefas são mais adequadas para awk , especialmente aquelas que exigem agregação de dados.

sed é um editor, awk é mais uma linguagem de processamento de texto em comparação.

    
por 13.05.2017 / 21:51

Tags