GNU/Linux >> Tutoriels Linux >  >> Linux

Remplacer une ligne par un autre contenu en utilisant Sed et Parallel pour un gros fichier ?

J'ai un gros fichier (50G) et je voudrais remplacer les lignes commençant par le contenu de la variable $i avec le contenu de la variable $newline en utilisant parallel commande.

Mon script est donné ci-dessous

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

Cela ne fonctionne pas pour moi, je ne supprime que la ligne.

Réponse acceptée :

Je pense que votre problème est ici :

'sed -i /^$i/d'

Essayez ceci :

"sed -i /^$i/d"

La variable $i ne peut pas être développé car il est entouré de guillemets simples, le fait de les transformer en guillemets doubles permet à Bash de les développer avec votre variable $i .


Linux
  1. Remplacer la plage de lignes par la plage de lignes (sed ou autres) ?

  2. Remplacer un mot par un autre en bash

  3. Comment utiliser sed pour remplacer la variable d'un fichier de configuration ?

  4. Comment remplacer un fichier en jar par une ligne de commande sous Linux ?

  5. Utilisation de sed pour remplacer entre un modèle spécifique

Manipuler du texte avec sed et grep

Encoder le contenu du fichier et le répercuter sur une seule ligne ?

Tutoriel Unix Sed :Impression de lignes de fichier à l'aide d'adresses et de modèles

Tutoriel Unix Sed :Rechercher et remplacer du texte dans un fichier à l'aide de RegEx

Tutoriel Unix Sed :ajouter, insérer, remplacer et compter les lignes de fichiers

Comment utiliser Sed pour rechercher et remplacer une chaîne dans un fichier