0
votes

Utilisation de Perl pour supprimer des sections en fonction d'une recherche de chaîne?

Pour les ensembles de données similaires à ceux suivants: xxx

quelles variables (1, 2, 3 ci-dessus) apparaissent est incohérente. J'aimerais qu'il se débarrasse des sections dans lesquelles il trouve: xxx

pour revenir: xxx

veuillez laisser moi savoir si des détails supplémentaires sont utiles. Merci d'avance.


2 commentaires

<étiquette, quelqueoption = true> la virgule ici après la balise, rend ce HTML invalide. Il serait préférable que les balises soient valides HTML, sinon vous devez expliquer une charge de merde pour correspondre à ceci. Une sorte de comme tomber le trou de lapin. Sans la virgule, vous pourriez faire ce <([\ w:] +) (? = (?: [^> "']" "] *" |') * ? \ ssomeoption = false) \ s + (?: "[\ s \ s] *?" | '[\ s \ s] *?' | [^>] *?) +> et Obtenez étiquette étiquette à utiliser dans la partie de fermeture [\ s \ s] *?


Qu'avez-vous essayé? S'il vous plaît dites-nous quels problèmes vous rencontrez.


3 Réponses :


0
votes

boucle sur l'entrée, une ligne à la fois. Si la ligne actuelle correspond à <étiquette, oneoption = true> , ignorez-le et chaque ligne jusqu'à la ligne suivante contenant . Sinon, imprimez-la et toutes les lignes jusqu'à la ligne suivante contenant . Ou vous pouvez avoir envie et utiliser l'un des nombreux modules de traitement XML Traitement, mais cela ne semble pas nécessaire.


5 commentaires

Cette réponse dit essentiellement "pour éliminer certaines lignes, en supprimant simplement ces lignes". Je ne vois pas comment cela est utile.


Absurdité. C'est une description de l'algorithme nécessaire pour faire le travail. Si j'avais posté un échantillon de code, auriez-vous la même plainte?


Lorsque le débordement de la pile n'est pas un service de rédaction de code, cette réponse semble suffisante compte tenu des informations fournies.


J'aime ça beaucoup vraiment. C'est mieux que l'approche générale que je prenais (indexation et impression basée sur des emplacements combinés d'en quelque sorte = vrai et / label).


@Paulm. Sildright, il semble que, même si cette réponse sonnait très évidente une inutile pour moi, c'était en fait utile pour l'OP. Si vous le modifiez, je vais supprimer mon bowvote (pas besoin de changer quoi que ce soit, il suffit de le modifier: un bowvote peut être annulé que si la réponse est modifiée). Désolé pour ça, on dirait que tu avais raison :)



2
votes

Cela vous donnera la sortie que vous démontrez la lecture à partir d'une entrée standard: xxx


3 commentaires

Ou à l'aide de bon vieux SED pour une doublure pour faire le même sed -ne '/ <étiquette, quelqueoption = false /, / <\ / étiquette> / p'


Ou si vous voulez coller avec Perl, votre one-liner est perl -ne 'Imprimer sauf si / <étiquette, ONOPTION = TRUE /. / <\ / ETIQUETTE> /'


@Dada c'est une solution beaucoup plus agréable



3
votes

Si le fichier peut s'intégrer en mémoire, vous pouvez essayer la ligne de commande Perl xxx

avec vos entrées données, xxx


2 commentaires

@zdim .. j'ai une question .. Comment lire un fichier en mode binaire et imprimer chaque octet à Hexadecimal .. Dans une perl un-doublon


@zdim .. Yep .. nettoyé