¿Cómo puedes usar sed para reemplazar toda la primera línea de un archivo con esa primera línea más algo de texto adicional? Por ejemplo, ¿cómo puedo agregar -foo
a un archivo que contiene solo una línea?
testfile
el contenido comienza:
some-text
testfile
final del contenido:
some-text-foo
Respuesta1
¿Cómo agregar a la primera línea de un archivo?
¿Cómo puedes usar sed para reemplazar toda la primera línea de un archivo con esa primera línea más algo de texto adicional?
Aquí hay otra forma de agregar una cadena al final de la línea número 1 con SED en Windows y luego convertirla nuevamente al formato DOS para caracteres EOL, es decir, CRLF en lugar de LF...
Primer comando (agregue caracteres -foo
solo al final de la primera línea)
SED -i "1 s|$|-foo|" "C:\Path\testfile.txt"
Segundo comando (convertir EOL nuevamente en avance de línea de retorno de carro)
SED -i "s/$/\r/" "C:\Path\testfile.txt"
Respuesta2
sed '1{s/$/-foo/}' file
1 para la primera línea, puede usarlo num,num
para asignar un rango, por ejemplo, 3,5 es cambiar la línea 3 a la línea 5. s para sustituir, $ significa el final de la línea. Si desea cambiar el archivo de inmediato, use -i
el parámetro; de todos modos, úselo con precaución.
awk 'FNR==1{print $0 "-foo";}' file(s)
awk es más potente, pero no tiene el parámetro -i para cambiar el archivo de inmediato.
Respuesta3
Puedes hacer esto con
sed -i '1!b;s/$/\-foo/g' testfile
Esto toma el archivo, mira solo la primera línea (1!b;), busca el final de la línea ($) y lo reemplaza con la cadena que desea.