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.bash
y 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 sed
su 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 -f
opció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 baconFile
el cual ejecutará los tres comandos sed para el archivo baconFile
.
Además, la g
opción en sed actualizará todas las apariciones de la variable en el archivo. Por ejemplo:
sed 's/,/ /g' filename