-1
votes

Comment utiliser SED avec un fichier de motifs et sed en place

J'essaie d'utiliser une liste de modèles pour rechercher dans 4 grands fichiers et supprimer la ligne contenant la regex.

J'ai essayé de spécifier le chemin de fichier, mais cela n'a pas fonctionné

sed -n '/ {home / dirco / ferme} / p' rimco rimco2 aval aval2

J'ai essayé d'utiliser l'option Sed -f mais il n'a pas fonctionné non plus

sed -f home / dirco / ferme rimco rimco2 Aval Aval2

En fin de compte, l'objectif sera de se rendre en place en supprimant cette ligne si le motif est trouvé.


2 commentaires

La syntaxe dans votre première commande SED est presque certainement tort, mais sans explication de ce qu'elle est censée faire, nous ne pouvons pas vous dire comment le corriger.


Je ne pense pas que cela ferait une différence du tout, le problème ici n'est pas le motif, mais l'emplacement du modèle, au lieu d'avoir cette commande. J'essaie de lire tous les modèles d'un fichier. L'utilisation d'une boucle prendra pour toujours la taille des fichiers.


3 Réponses :


0
votes

Essayez ceci:

cmd=$(
echo -n "sed -i '"
while read -r line; do
    echo -n "/$line/d;"
done < patternfile.txt
echo "'"
)
"$cmd" rimco rimco2 aval aval2


1 commentaires

Merci pour votre réponse, mais en raison de la taille des fichiers, cela prendra des jours de séjour, sed au tirage de chaque ligne. Dans la description, j'ai mentionné 4 grands fichiers (environ 10 Go chacun)



1
votes

Ceci pourrait fonctionner pour vous (GNU SED):

sed 's#/#\\/#g;s#.*#/&/p#g' patternFile | sed -nf - file1 file2 file3 ...


2 commentaires

Malheureusement, cela ne fonctionne pas, je continue à obtenir une commande non trouvé


Malheureusement, cela ne fonctionne pas, je continue à obtenir la commande non trouvé à la fin de chaque ligne



0
votes

Voici comment faire ce que vous voulez efficacement et de manière robuste en utilisant GNU AWK pour l'édition de GNU AWK (en supposant que votre liste de regexples dans regexpsfile n'est pas massif): xxx < / p>


0 commentaires