| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
| database:utilitaires-imports [2026/08/20 10:02] – [Remplacement de chaîne] jpmilcent | database:utilitaires-imports [2026/08/20 11:06] (Version actuelle) – [Extraire les lignes comprenant un nombre de tabulation anormal] jpmilcent |
|---|
| # Si tout est OK, la commande ne doit rien afficher... | # Si tout est OK, la commande ne doit rien afficher... |
| </code> | </code> |
| | |
| | ===== Extraire lignes avec trop de caractères dans une colonne ===== |
| | |
| | <code bash> |
| | # Extraire les lignes dont la colonne 38 possède plus de 500 caractères : |
| | awk -F'\t' -v col=38 -v limite=500 'length($col) > limite { print "Ligne " NR " : " length($col) " caractères" }' synthese.csv > synthese.col-38-extra-chars.txt |
| | </code> |
| | * ''%%-v col=38%%'' : remplacez 38 par le numéro de la colonne que vous souhaitez analyser. |
| | * ''%%-v limite=500%%'' : remplacez 500 par le nombre de caractères au-delà duquel vous souhaitez être alerté. |
| | * ''%%length($col) > limite%%'' : c'est la condition. awk ne déclenchera la suite que si la longueur du texte dans la cellule est strictement supérieure à votre limite. |
| | * ''%%{ print NR }%%'' : permet d'afficher uniquement le numéro de la ligne concernée. Dans l'exemple, nous affichons également le nombre de caractères ''%%length($col)%%''. |
| |
| ===== Trouver les doublons ===== | ===== Trouver les doublons ===== |
| |
| |
| ===== Affichage/Extraction de lignes contenant une chaine particulière ===== | ===== Affichage/Extraction de lignes contenant une chaîne particulière ===== |
| |
| Par exemple, pour extraire les lignes du fichier ''synthese.csv'' contenant | Par exemple, pour extraire les lignes du fichier ''synthese.csv'' contenant |
| utiliser les commandes suivantes : | utiliser les commandes suivantes : |
| <code bash> | <code bash> |
| | # Extraction de la ligne des entêtes de colonne : |
| head -1 synthese.csv > synthese.problems.csv | head -1 synthese.csv > synthese.problems.csv |
| | # Recherche via RegExp : |
| grep -P ' Stéphane\t\tpointage' synthese.csv >> synthese.problems.csv | grep -P ' Stéphane\t\tpointage' synthese.csv >> synthese.problems.csv |
| | # Recherche d'un texte 100% littéral (pas de regexp) : |
| | grep -F " - Téléphérique de l'Aiguille du Midi. Gare intermédiaire. Abords de la gare. \nLa zone parcouru" synthese.csv >> synthese.problems.csv |
| | </code> |
| | |
| | ===== Affichage/Extraction des numéros de ligne contenant une chaîne particulière ===== |
| | <code bash> |
| | # Recherche via RegExp : |
| | grep -nP ' Stéphane\t\tpointage' synthese.csv | cut -d: -f1 |
| | # Recherche d'un texte 100% littéral (pas de regexp) : |
| | grep -nF " - Téléphérique de l'Aiguille du Midi. Gare intermédiaire. Abords de la gare. \nLa zone parcouru" synthese.csv | cut -d: -f1 |
| </code> | </code> |
| | * ''-n'' (//Line number//) : Demande à grep d'afficher le numéro de la ligne avant le texte (ex: 45231: - Téléphérique...). |
| | * ''%% | cut -d: -f1 %%'' : permet de garder seulement le numéro de ligne. |
| | * Pour rediriger vers un fichier ajouter à la fin ''%%> synthese.pattern-lines.txt%%'' |
| |
| ==== Commandes d'extractions (TSV) ==== | ==== Commandes d'extractions (TSV) ==== |
| export NEW="Au contact du granite du Mont-Blanc et du socle de gneiss, la zone est jonchée de blocs granitiques venus des sommets (épars ou en moraines). Couvert de blocs en aval, le glacier des Pèlerins reste relativement statique : contrairement aux glaciers voisins, il ne marque actuellement aucun recul caractéristique." | export NEW="Au contact du granite du Mont-Blanc et du socle de gneiss, la zone est jonchée de blocs granitiques venus des sommets (épars ou en moraines). Couvert de blocs en aval, le glacier des Pèlerins reste relativement statique : contrairement aux glaciers voisins, il ne marque actuellement aucun recul caractéristique." |
| # Remplacement | # Remplacement |
| perl -pe 's/\Q$ENV{OLD}\E/$ENV{NEW}/g' synthese.csv > synthese_propre.csv | mv synthese.csv synthese.save.csv && perl -pe 's/\Q$ENV{OLD}\E/$ENV{NEW}/g' synthese.save.csv > synthese.csv |
| </code> | </code> |
| * ''\Q'' et ''\E'' (//Quotemeta//) : ordonne à Perl de traiter tout le texte comme du texte littéral. | * ''\Q'' et ''\E'' (//Quotemeta//) : ordonne à Perl de traiter tout le texte comme du texte littéral. |