2016-10-03 6 views
0

Je cherche à écrire un script assez basique qui d'abord ne fait que transpercer un fichier texte que je possède, et pour chaque ligne qui contient le monde 'NUMERIC' lance une commande sed. Je me demandais comment je pourrais éventuellement faire cela? Donc, fondamentalement, j'ai d'abord un très gros fichier texte, ce script doit exécuter une sorte de boucle for (ou quelque chose d'autre) pour passer et exécuter une commande sed seulement si la ligne dans le fichier texte contient le mot ' NUMERICScript vers des lignes sed contenant des mots spécifiques

Merci

+0

Il serait mieux si vous affinez votre question en fournissant des données d'échantillon. Au-dessous d'un utilisateur a répondu à votre question pour faire le remplacement en supprimant les lignes 'non-NUMERIC'. Un autre utilisateur a effectué le remplacement en conservant les lignes 'non-NUMERIC'. – blackpen

Répondre

0

ou pourquoi pas cela:

cat file.txt | grep 'NUMERIC' | sed 's/abc/def/' 

Dans l'exemple ci-dessus, je suis Taillage le fichier « fichier.txt », et puis grepping la chaîne 'NUMERIC', ce qui me donnera des lignes qui ont 'NUMERIC' en eux, puis en appliquant une opération sed en remplaçant abc par def (remplacez l'opération SED de votre choix).

La commande ci-dessus imprimera la sortie à l'écran. Si vous souhaitez l'enregistrer, vous pouvez rediriger la sortie vers un fichier.

exemple ci-dessous:

cat file.txt | grep 'NUMERIC' | sed 's/abc/def/' >> new_file.txt 
0

Vous pouvez spécifier une adresse avant votre commande sed.

Seules les lignes correspondant au motif d'adresse seront traitées:

$ sed '/NUMERIC/s/five/six/' <<< "five NUMERIC" 
six NUMERIC