¿Qué comando de Unix podemos usar para agregar texto a una línea específica en un archivo?

StackOverflow https://stackoverflow.com/questions/602921

  •  03-07-2019
  •  | 
  •  

Pregunta

¿Alguien sabe de una serie de comandos de Unix que permiten que alguien agregue texto al final de una línea específica en un archivo?

por ejemplo

Línea 1

Línea 2

Línea 3

Línea 4

Deseo adjuntar el texto " información adicional " a la línea 3 para que el archivo ahora se vea así:

Línea 1

Línea 2

Línea 3, información adicional

Línea 4

¿Fue útil?

Solución

Perl:

perl -p -e's{\n}{, extra information\n} if $. ==3' myfile

$. es el número de línea

Otros consejos

en awk es:

awk '{s=
sed -e '3s/$/, Extra Information/' -i myfile
; if( NR==3 ){ s=s ", Extra Information" } print s;}' myfile > newfile

versión sed propia:

<*>

Aquí hay una versión con sed portátil (sin la opción -i):

sed '3s/$/Hello World/' myfile

Tenga en cuenta que myfile no se modifica, por lo que puede recuperarse de posibles errores.

awk 'NR == 3 { print 
somecommand > oldfile.tmp && mv oldfile.tmp oldfile
", extra information" } NR != 3' myfile

La parte anterior a las llaves es la condición : si estamos en la línea 3, adjuntamos un texto. Si se omiten las llaves, la acción predeterminada es simplemente imprimir $ 0 . Redirigir a un nuevo archivo o canalización a otro programa según corresponda. No puedes redireccionar al mismo archivo que estás leyendo. Una solución común es redirigir a un nuevo archivo, y luego pasar si el comando fue exitoso:

<*>
sed -e "s/^Line 3/\0, extra info/" -i text.txt

Si desea que la información adicional se agregue a una sola línea, cualquiera de las frases de una línea de sed / awk servirá.

Si desea agregar algo a (casi) todas las líneas del archivo, debe crear un segundo archivo con la información adicional para cada línea y usar pegar :

$ cat myfile
line 1
line 2
line 3
line 4
$ cat extra 
something

something else
$ paste myfile extra
line 1  something
line 2
line 3  something else
line 4
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top