Quiero insertar texto en la parte superior de un archivo ya existente. Cómo puedo conseguir esto. Lo intenté echo
y tee
no tuve éxito.
Intenté insertar una línea de repositorio en la parte superior del sources.list
archivo desde la terminal.
Nota
Necesito una solución rápida de una línea, porque ya conocía el método de otra respuesta
apt
command-line
bash
Anwar
fuente
fuente
echo "deb http://extras.ubuntu.com/ubuntu precise main" | sudo tee -a /etc/apt/sources.list
, también necesita sudo before tee para obtener privilegios de administrador. Pero, ¿por qué querrías agregar algo en la parte superior de sources.list?Respuestas:
En realidad es bastante fácil con
sed
:sed -i -e '1iHere is my new top line\' filename
1i
le dice a sed que inserte el texto que sigue en la línea 1 del archivo; no olvide la\
nueva línea al final para que la línea 1 existente se mueva a la línea 2.fuente
s
lugar de i in1i
.echo "Text Here" >> Filename
En edición general en su lugar con un guión es complicado, pero se puede utilizar
echo
ycat
a continuación,mv
Sin embargo, si está jugando con sources.list, necesita agregar un poco de validación y prueba de balas para detectar errores, etc., porque realmente no desea perder esto. Pero esa es una pregunta separada :-)
fuente
sabido que
prepend
es mi shell personalizado :Utilice también una ruta relativa o absoluta, debería funcionar bien:
Actualización:
si desea un script permanente para esto, abra y
nano /etc/bash.bashrc
luego agregue esta función al final del archivo:Vuelva a abrir su terminal y disfrute:
fuente
¿Y por qué no usar un editor de texto genuino para eso? ed es el editor de texto estándar.
O, si desea que los comandos sean más legibles:
1
: ir a primera líneai
: modo de inserción.
: deja de insertar, vuelve al modo normalwq
: escribe y renuncia, gracias, adiós.fuente
FIRST LINE
) con esto?first_line
a continuación:ed -s filename < <(printf '%s\n' 1i "$first_line" . wq)
. Asegúrese de que la variable no se expanda a un solo punto y que no contenga ningún carácter de nueva línea (desinfecte si proviene de la entrada del usuario).Siempre existe la
awk
opción. Reemplazarstring
variable con sus contenidos. Sin embargo, este no es un cambio en el lugar. Personalmente, tiendo a no hacer cambios en el lugar. Esta es definitivamente una preferencia personal. Dos cosas,-v
significa una variable en awk y la variablen
se usa aquí para hacer coincidir un número de línea, efectivamenteNR == 1
. Puede usar esto de muchas maneras simplemente cambiando el valor den
ys
.Ejemplo:
fuente
Puede usar Vim en modo Ex:
1
seleccione primera líneai
insertar nueva línea de textox
guardar y cerrarfuente