Como exatamente crio um script sed e o uso para editar um arquivo?

Como exatamente crio um script sed e o uso para editar um arquivo?

Eu sei como editar um arquivo usando o sed, uma etapa de cada vez, mas como eu criaria um script sed real e depois o usaria no arquivo para fazer as mesmas coisas que os comandos sed individuais fariam? Por exemplo, estes 3 comandos sed:

sed -i '4i\ 'baconFile

sed -i 's/,/\t\t/' baconFile

sed -i 's/,/ /' baconFile

Responder1

Colocando comandos em um arquivo

Coloque essas linhas em um arquivo de script chamado script.sed.

4i\ 
s/,/\t\t/
s/,/ /

Então execute assim:

$ sed -i -f script.sed baconFile

Criando um script sed independente

se você quiser que seja um único executável, faça o seguinte:

#/bin/bash

sed -i '
4i\ 
s/,/\t\t/
s/,/ /
' "$@"

Coloque as linhas acima em um arquivo chamado script.bash, torne-o executável ( chmod +x script.bashe execute-o assim:

$ script.bash baconFile

Criando o arquivo de script

Você pode usar este método para criar o arquivo que mencionei acima.

$ cat > script.bash <<EOF
#!/bin/bash

4i\ 
s/,/\t\t/
s/,/ /
EOF

Isso criará o arquivo de script. Você pode confirmar usando este comando:

$ cat script.bash
#!/bin/bash

4i\ 
s/,/\t\t/
s/,/ /

Responder2

sed -i '4i\ 

s/,/\t\t/

s/,/ /' baconFile

sed funciona como a maioria dos intérpretes, vários comandos podem estar em linhas separadas ou delimitados por ;. se você não tiver GNU sedsua primeira linha, poderá causar um erro.


Para criar um script sed, basta fornecer o caminho absoluto para o seu intérprete sed no seu shebang. e certifique-se de que o arquivo seja executável.

#!/bin/sed -f
s/foo/bar/

chmod u+x foo
./foo <<<foo
bar

ou o script pode ser chamado junto com o comando sed. sed -i -f foo file

Responder3

Você precisa da -fopçãosed -f sed-script

Responder4

Você pode escrever um script shell bash ou korn para fazer isso. Se quiser torná-lo dinâmico, você pode fazer com que ele receba um nome de arquivo como parâmetro e pode executar esses comandos sed em qualquer arquivo que desejar.

Crie um novo arquivo, digamosupdatefile.sh

#!/bin/bash
#$1 is the first parameter being passed when calling the script. The variable filename will be used to refer to this.
filename=$1

sed '4i\ ' filename
sed 's/,/\t\t/' filename
sed 's/,/ /' filename

Você pode então executar updatefile.sh baconFileo qual executará todos os três comandos sed para o arquivo baconFile.

Além disso, a gopção sed atualizará todas as ocorrências da variável no arquivo. Por exemplo:

sed 's/,/ /g' filename

informação relacionada