J'ai une liste de valeurs qui me sont retournées et elles se terminent toutes par un | comme ci-dessous:
testdata1-old |
testdata |
test2-old|
Je veux supprimer toutes les lignes contenant -old. Quelle expression régulière puis-je utiliser?
J'ai une liste de valeurs qui me sont retournées et elles se terminent toutes par un | comme ci-dessous:
testdata1-old |
testdata |
test2-old|
Je veux supprimer toutes les lignes contenant -old. Quelle expression régulière puis-je utiliser?
Réponses:
Je pense que vous avez un malentendu à propos des expressions régulières. Ils répondent fondamentalement à la question "ce texte ressemble-t-il à ce modèle particulier?" Il existe de nombreux outils qui utilisent des expressions régulières pour manipuler du texte, comme sedou grep, et je pense que vous confondez les deux.
Ce que vous devez faire est de former une expression régulière qui correspond au texte que vous souhaitez filtrer. Par exemple, l'expression que vous recherchez est ^.*-old\|$, et filtrez les lignes en utilisant quelque chose comme ceci.
foreach line in input_file
    if regex.matches(line, "^.*-old\|$") then
        continue
    else
        print line
              lineà la elseclause au lieu de l'imprimer.
                    Ce dont tu as besoin c'est
grep -v -E '^. * - ancien \ | $' fichier_entrée> fichier_sortie
ou ce qui devrait fonctionner de la même manière:
egrep -v '^. * - ancien \ | $' fichier_entrée> fichier_sortie
Maintenant, le plus difficile est de trouver une version Windows de grepou egrepexécutée à partir de cmd.exe ou de Powershell.
negative lokaheadpourrait fonctionner, selon votre moteur de regex.