GNU/Linux >> Linux Esercitazione >  >> Linux

Sostituire una riga con un altro contenuto utilizzando Sed e Parallel per un file di grandi dimensioni?

Ho un file grande (50G) e vorrei sostituire le righe che iniziano con il contenuto della variabile $i con contenuto della variabile $newline usando parallel comando.

Il mio script è riportato di seguito

#!/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 

Non funziona per me, sto solo eliminando la linea.

Risposta accettata:

Penso che il tuo problema sia qui:

'sed -i /^$i/d'

Prova questo:

"sed -i /^$i/d"

La variabile $i non può essere espanso perché è racchiuso tra virgolette singole, passare a virgolette doppie consente a Bash di espanderle con la tua variabile $i .


Linux
  1. Come sostituire il testo come sed con python?

  2. Utilizzo di grep e sed per trovare e sostituire una stringa

  3. Trova e sostituisci con sed nella directory e nelle sottodirectory

  4. Sostituisci una parola con un'altra in bash

  5. Come posso sostituire le virgolette singole con un altro carattere in sed?

Manipolazione del testo con sed e grep

Codificare il contenuto del file e farlo eco come una riga?

Esercitazione Unix Sed:stampa di righe di file utilizzando l'indirizzo e i modelli

Tutorial Unix Sed:trova e sostituisci testo all'interno di un file usando RegEx

Tutorial Unix Sed:aggiungi, inserisci, sostituisci e conta righe di file

Come utilizzare Sed per trovare e sostituire una stringa in un file