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 sed
ou 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 else
clause 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 grep
ou egrep
exécutée à partir de cmd.exe ou de Powershell.
negative lokahead
pourrait fonctionner, selon votre moteur de regex.