GNU/Linux >> Tutoriales Linux >  >> Linux

¿Reemplazar una línea con otro contenido usando Sed y paralelo para un archivo grande?

Tengo un archivo grande (50G) y me gustaría reemplazar las líneas que comienzan con el contenido de la variable $i con contenido de variable $newline usando parallel comando.

Mi guión se da a continuación

#!/bin/sh 
File="test.txt"
i="foo"
newline="helooooooo"

parallel -a $File -k --block 30M --pipe-part 'sed -i /^$i/d' $File
echo $newline >> $File 

No funciona para mí, solo borra la línea solamente.

Respuesta aceptada:

Creo que tu problema está aquí:

'sed -i /^$i/d'

Prueba esto:

"sed -i /^$i/d"

La variable $i no se puede expandir porque está entre comillas simples, cambiarlas a comillas dobles le permite a Bash expandirlas con su variable $i .


Linux
  1. Reemplazar una palabra con otra en bash

  2. ¿Cómo reemplazo las comillas simples con otro carácter en sed?

  3. ¿Cómo usar sed para reemplazar la variable de un archivo de configuración?

  4. ¿Cómo reemplazar un archivo en jar con línea de comando en Linux?

  5. Usar sed para reemplazar entre un patrón específico

Manipulación de texto con sed y grep

¿Reemplazar líneas que coinciden con un patrón con líneas de otro archivo en orden?

Tutorial de Unix Sed:Impresión de líneas de archivos usando direcciones y patrones

Tutorial de Unix Sed:busque y reemplace texto dentro de un archivo usando RegEx

Tutorial de Unix Sed:anexar, insertar, reemplazar y contar líneas de archivos

Cómo usar Sed para buscar y reemplazar una cadena en un archivo