Je n'ai que rarement affaire à des scripts, et je me heurte donc à un manque de connaissances sur ce problème.
J'ai un fichier >500mb en texte, qui est bien sectionné, mais je sais qu'il y a 5 à 10 "mauvaises" sections à l'intérieur. Les données contenues dans les sections peuvent être évaluées assez facilement par un humain, mais je ne sais pas comment le faire dans un programme.
J'achète une bonne valeur connue en #Field MyField
- Toutefois, si cette valeur n'apparaît pas dans le #FIELD LOCATION
mais quelque chose n'a pas fonctionné.
Voici un exemple de deux sections dans le fichier. La première est "mauvaise" et la seconde est "bonne".
#START Descriptor
#FIELD LOCATION="http://path.to/file/here&Value=FOO&OtherValue=BLAH"
#FIELD AnythingElse
#FIELD MyField="BAR"
#END
#START Descriptor
#FIELD LOCATION="http://path.to/file/here&Value=BAR&OtherValue=BLAH"
#FIELD AnythingElse
#FIELD MyField="BAR"
#END
-
Les sections commencent et se terminent logiquement, avec
#START
y#END
-
Si
#FIELD LOCATION
n'existe pas, passer à la section suivante -
Si
#FIELD MyField="BAR"
y#FIELD LOCATION
ne contient pasBAR
, imprime toutes les lignes de cette section dans un nouveau fichier. -
Note - Clarification de la
#FIELD MyField="BAR"
- Il s'agit d'une valeur de contrôle que j'ajoute en récupérant d'autres informations sur les données au fur et à mesure que le fichier est construit (dans mon cas, il s'agit d'un indicateur de langue, tel que EN ou DE, ce qui donne littéralement#FIELD MyField="EN"
Toute autre valeur dans ce champ serait ignorée, car il ne s'agit pas d'un enregistrement correspondant à mes critères.
Je pense que cela peut être fait en Awk ou en Perl, je peux faire des phrases très simples, mais cela dépasse mes compétences.