{ cat file; echo 'END OF FILE'; } > newFile , esto también funciona gracias a sh. *. (no sed, pero funciona y simple)
44
un simple echo "Cool Text" >> filetambién debería hacer el truco.
Danpe
Respuestas:
95
sed -e "\$aTEXTTOEND" Es la forma más sencilla.
Cómo funciona
$coincide con la última línea (es una seddirección normal ; 4aTEXTTOENDse insertaría después de la cuarta línea), aes el comando anexar y TEXTTOENDes qué agregar.
Para OS X sed -e '$a\NEWLINE\\'. Reemplace NEWLINE con una nueva línea real.
Jorge Bucaran
15
sed -i -e "\ $ aTEXTTOEND" <nombre de archivo> sería el comando completo.
Lasse Meyer
2
No estoy trabajando en macos. Ni siquiera el comentario de Jorge Bucarán: sed: 1: "$ a \ NEWLINE \\": caracteres adicionales después de \ al final de un comando
Emanuele Paolini
1
En debian 9 agrega una nueva línea en lugar de agregar al final de la última línea.
Es cierto, pero puede adivinar que el caso de uso del OP está entre corchetes del archivo con " <php " y " >", y cita los contenidos seleccionados de una sola vez, por lo que probablemente realmente quiera un sedfragmento.
dmckee
2
Además, si va a hacer esto y no quiere una nueva línea, use echo -n
Vinko Vrsalovic
2
No me gusta adivinar Cada vez que lo intento, me equivoco.
44
Otra razón por la cual la respuesta aceptada es más útil es en el caso de anteponer esto sudo, lo que hace que esta variación falle ya que echoes un comando de shell incorporado en lugar de un archivo ejecutable que se encuentra en$PATH
Tony Cesaro
@TonyCesaro: echoes un built-in, pero es también un archivo ejecutable que se encuentra en$PATH
Zan Lynx
24
Suponiendo que desea poner la etiqueta php final a los archivos, luego
De una manera simple para escribir y hacer los cambios en los contenidos en una línea específica en un archivo. Si desea insertar algo en un número de línea específico, se puede usar el siguiente comando:
sed -i '2i i have started' sheikh.log
donde 2i- línea número 2 ei significa inserción. Si tiene que insertar en la última línea, use $en lugar de 2. He comenzado: el texto que se insertará y sheikh.loges el nombre del archivo.
También podemos hacer los cambios en la línea usando el siguiente comando
Supongo que cualquiera que haya buscado cómo insertar / agregar texto al principio / al final de un archivo probablemente también necesite saber cómo hacer el otro.
Esta calsalida se canaliza a gnu- sed(llamado gseden macOS instalado a través de brew.sh ) con RegEx extendido ( -E) y 6 "scripts" aplicados ( -e) y los saltos de línea se escapan \para facilitar la lectura. Las secuencias de comandos 1 y 2 se utilizan 1i\para "en la línea 1, insertar". Las secuencias de comandos 5 y 6 se usan $a\para "en la línea <última>, anexar". Alineé verticalmente las salidas de texto para hacer que el código represente lo que se espera en el resultado. Las secuencias de comandos 3 y 4 hacen sustituciones (la última se aplica solo a "línea <última>"). El resultado es convertir la salida del comando a JSON válido.
Si bien no he votado su pregunta, tenga en cuenta que ya tenemos varias respuestas, incluida una aceptada, que demuestran el resultado deseado.
Jeff Schaller
@JeffSchaller La comunidad de Stack Exchange no es un foro. Su propósito se extiende más allá de ayudar a que el OP se desbloquee. El objetivo es sembrar la base de conocimiento global con muchas opciones que los buscadores pueden encontrar al buscar respuestas. La razón por la que titulé mi respuesta es para ayudar a los usuarios a reconocer la utilidad de esta respuesta incluso antes de que hagan clic en el resultado de Google.
{ cat file; echo 'END OF FILE'; } > newFile
, esto también funciona gracias a sh. *. (no sed, pero funciona y simple)echo "Cool Text" >> file
también debería hacer el truco.Respuestas:
sed -e "\$aTEXTTOEND"
Es la forma más sencilla.Cómo funciona
$
coincide con la última línea (es unased
dirección normal ;4aTEXTTOEND
se insertaría después de la cuarta línea),a
es el comando anexar yTEXTTOEND
es qué agregar.fuente
sed -e '$a\NEWLINE\\'
. Reemplace NEWLINE con una nueva línea real.No es necesario usar
sed
en ese caso. Qué tal sifuente
<php
" y ">
", y cita los contenidos seleccionados de una sola vez, por lo que probablemente realmente quiera unsed
fragmento.sudo
, lo que hace que esta variación falle ya queecho
es un comando de shell incorporado en lugar de un archivo ejecutable que se encuentra en$PATH
echo
es un built-in, pero es también un archivo ejecutable que se encuentra en$PATH
Suponiendo que desea poner la etiqueta php final a los archivos, luego
debería hacer el truco
fuente
Vea su publicación original para el comando todo en uno sed.
fuente
Utilice el comando sed 'append (a)'. Por ejemplo, para agregar dos líneas al final del archivo:
fuente
De una manera simple para escribir y hacer los cambios en los contenidos en una línea específica en un archivo. Si desea insertar algo en un número de línea específico, se puede usar el siguiente comando:
donde
2i
- línea número 2 ei significa inserción. Si tiene que insertar en la última línea, use$
en lugar de 2. He comenzado: el texto que se insertará ysheikh.log
es el nombre del archivo.También podemos hacer los cambios en la línea usando el siguiente comando
i
se cambia awe
.fuente
Primero y último
Supongo que cualquiera que haya buscado cómo insertar / agregar texto al principio / al final de un archivo probablemente también necesite saber cómo hacer el otro.
Explicación
Esta
cal
salida se canaliza a gnu-sed
(llamadogsed
en macOS instalado a través de brew.sh ) con RegEx extendido (-E
) y 6 "scripts" aplicados (-e
) y los saltos de línea se escapan\
para facilitar la lectura. Las secuencias de comandos 1 y 2 se utilizan1i\
para "en la línea 1, insertar". Las secuencias de comandos 5 y 6 se usan$a\
para "en la línea <última>, anexar". Alineé verticalmente las salidas de texto para hacer que el código represente lo que se espera en el resultado. Las secuencias de comandos 3 y 4 hacen sustituciones (la última se aplica solo a "línea <última>"). El resultado es convertir la salida del comando a JSON válido.salida
fuente