¿Cómo creo exactamente un script sed y lo uso para editar un archivo?

¿Cómo creo exactamente un script sed y lo uso para editar un archivo?

Sé cómo editar un archivo usando sed paso a paso, pero ¿cómo crearía un script sed real y luego lo usaría en el archivo para hacer las mismas cosas que harían los comandos sed individuales? Por ejemplo, estos 3 comandos sed:

sed -i '4i\ ' archivo tocino

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

sed -i 's/,/ /' archivo tocino

Respuesta1

Poner comandos en un archivo

Coloque estas líneas en un archivo de script llamado script.sed.

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

Luego ejecútelo así:

$ sed -i -f script.sed baconFile

Hacer un script sed independiente

Si quieres que sea un único ejecutable, haz esto:

#/bin/bash

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

Coloque las líneas anteriores en un archivo llamado script.bash, hágalo ejecutable ( chmod +x script.bashy ejecútelo así:

$ script.bash baconFile

Creando el archivo de script

Puede utilizar este método para crear el archivo que mencioné anteriormente.

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

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

Esto creará el archivo de script. Puede confirmar usando este comando:

$ cat script.bash
#!/bin/bash

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

Respuesta2

sed -i '4i\ 

s/,/\t\t/

s/,/ /' baconFile

sed funciona como la mayoría de los intérpretes, varios comandos pueden estar en líneas separadas o delimitados por ;. si no tiene GNU sedsu primera línea puede causar un error.


Para crear un script sed, simplemente proporcione la ruta absoluta a su intérprete sed en su shebang. y asegúrese de que el archivo sea ejecutable.

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

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

o se podría llamar al script junto con el comando sed. sed -i -f foo file

Respuesta3

Necesitas la -fopciónsed -f sed-script

Respuesta4

Puede escribir un script de shell bash o korn para hacer esto. Si desea hacerlo dinámico, puede hacerlo de modo que tome un nombre de archivo como parámetro y pueda ejecutar estos comandos sed en cualquier archivo que desee.

Crear un nuevo archivo, 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

Luego puede ejecutar updatefile.sh baconFileel cual ejecutará los tres comandos sed para el archivo baconFile.

Además, la gopción en sed actualizará todas las apariciones de la variable en el archivo. Por ejemplo:

sed 's/,/ /g' filename

información relacionada