La diferencia entre el comando sed bajo mac y linux


Prefacio
Hay una cierta diferencia entre usar el comando sed en Mac y Linux. La razón principal es que el formato de copia de seguridad debe especificarse en Mac, y se requiere una nueva inserción de línea para insertar en Mac.

Formato de copia de seguridad no ignorable

# linux下success
sed -i 's/hello/world/g' hello.text

La línea de código anterior se puede ejecutar en Linux, la función es reemplazar el hola que se encuentra en el archivo hello.text con world, y guardar directamente el contenido modificado en el archivo.
Si ejecuta el comando anterior en una Mac, encontrará que esta línea de código informará un error. La razón es que en Mac, cuando el comando sed manipula directamente el archivo, debe especificar el formato de la copia de seguridad, pero en Linux no existe tal requisito.

# mac下success
sed -i '' 's/hello/world/g' hello.php

Como se muestra en el código anterior, agregue un par de comillas después de -i para especificar el formato de la copia de seguridad. Si no se requiere una copia de seguridad, el contenido de las comillas puede estar vacío.

Insertar texto necesita nueva línea

sed -i '' '1i\ hello ' hello.txt

La función de la línea de código anterior es insertar hola en el archivo, que puede ejecutarse normalmente en Linux, pero aún informará un error en Mac.
La razón es que cuando utiliza el comando sed para insertar texto en el archivo, debe insertar un salto de línea después de 1i. El código correcto es el siguiente.
Por ejemplo, si desea utilizar este comando en la terminal, el código correcto es el siguiente, después de 1i, presione enter y luego continúe ingresando los siguientes comandos.

sed -i '' '1i\
hello' hello.php

Debido a que uso ruby ​​para llamar al script de shell, escribiré el comando en la cadena, y el código para insertar el texto usando sed en ruby ​​es el siguiente.

system "sed -i '' '1i\\'$'\n''hello' hello.php"

Supongo que te gusta

Origin www.cnblogs.com/xuange306/p/12702313.html
Recomendado
Clasificación