Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| database:utilitaires-imports [2021/05/07 12:57] – [Remplacement de chaine] jpmilcent | database:utilitaires-imports [2026/08/20 11:06] (Version actuelle) – [Extraire les lignes comprenant un nombre de tabulation anormal] jpmilcent | ||
|---|---|---|---|
| Ligne 33: | Ligne 33: | ||
| Compter le nombre de ligne d'un fichier : <code bash> wc -l synthese.csv </ | Compter le nombre de ligne d'un fichier : <code bash> wc -l synthese.csv </ | ||
| + | |||
| + | ==== Visualiser un fichier TSV dans un terminal ==== | ||
| + | Pour afficher les premières lignes d'un fichier TSV sans l' | ||
| + | * Créer un fichier '' | ||
| + | #!/bin/bash | ||
| + | perl -pe ' | ||
| + | </ | ||
| + | * Editer '' | ||
| + | # pretty tsv with first ten lines | ||
| + | alias watch=' | ||
| + | </ | ||
| + | * Vous pouvez lancer la commande '' | ||
| ===== Extraire les lignes comprenant un nombre de tabulation anormal ===== | ===== Extraire les lignes comprenant un nombre de tabulation anormal ===== | ||
| Ligne 50: | Ligne 62: | ||
| Il est possible de repérer les lignes posant problème avec la succession | Il est possible de repérer les lignes posant problème avec la succession | ||
| de commandes suivantes : | de commandes suivantes : | ||
| + | |||
| + | Si votre espace de stockage principal n'est pas un SSD NVME mais que vous en posséder un sur la machine, l' | ||
| <code bash> | <code bash> | ||
| # Afficher le nombre de tabulation des lignes du fichier contenant un extrait de la synthese | # Afficher le nombre de tabulation des lignes du fichier contenant un extrait de la synthese | ||
| - | # Le chemin / | + | # Le chemin /data-nvme/jpmilcent/tmp/ correspond à un dossier temporaire sur un disque rapide SSD NVM-E |
| - | grep -n -o -P " | + | grep -n -o -P " |
| # Extraire le nombre de tabulation anormal (**ici différent de 58**) et le numéro de la ligne correspondante : | # Extraire le nombre de tabulation anormal (**ici différent de 58**) et le numéro de la ligne correspondante : | ||
| - | # Le chemin / | + | # Le chemin /data-nvme/jpmilcent/tmp/ correspond à un dossier temporaire sur un disque rapide SSD NVM-E |
| - | grep -n -o -P " | + | grep -n -o -P " |
| # Supprimer le nombre de tabulation (occupant les 8 premières caractères de chaque ligne) | # Supprimer le nombre de tabulation (occupant les 8 premières caractères de chaque ligne) | ||
| Ligne 73: | Ligne 87: | ||
| # Après correction, vous pouvez vérifier si le fichier corrigé ne contient plus de ligne en erreur | # Après correction, vous pouvez vérifier si le fichier corrigé ne contient plus de ligne en erreur | ||
| # Le chemin / | # Le chemin / | ||
| - | grep -n -o -P " | + | grep -n -o -P " |
| # Si tout est OK, la commande ne doit rien afficher... | # Si tout est OK, la commande ne doit rien afficher... | ||
| </ | </ | ||
| + | |||
| + | ===== 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' | ||
| + | </ | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| ===== Trouver les doublons ===== | ===== Trouver les doublons ===== | ||
| ==== Extraire les lignes dupliquées ===== | ==== Extraire les lignes dupliquées ===== | ||
| - | * Extraire les lignes dupliquées : <code bash> sort -T / | + | * Extraire les lignes dupliquées : <code bash> sort -T /data-nvme/jpmilcent/tmp/ synthese.csv | uniq -cd > synthese.duplicates.csv </ |
| * Extraire les lignes dupliquées en se basant seulement sur le contenu de la première colonne (remplacer le chiffre dans '' | * Extraire les lignes dupliquées en se basant seulement sur le contenu de la première colonne (remplacer le chiffre dans '' | ||
| Ligne 103: | Ligne 128: | ||
| apparaître avec un texte rouge. | apparaître avec un texte rouge. | ||
| - | ===== Affichage/ | + | ===== Trouver les valeurs NULL dans les champs obligatoires ===== |
| + | * Vérifier la présence de valeur NULL (='' | ||
| + | * Vérifier que la colonne 33 correspond bien au champ // | ||
| + | * Extraction des lignes contenant " | ||
| + | |||
| + | |||
| + | ===== Affichage/ | ||
| Par exemple, pour extraire les lignes du fichier '' | Par exemple, pour extraire les lignes du fichier '' | ||
| Ligne 110: | Ligne 141: | ||
| 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 | ||
| + | # | ||
| grep -P ' Stéphane\t\tpointage' | grep -P ' Stéphane\t\tpointage' | ||
| + | # | ||
| + | grep -F " - Téléphérique de l' | ||
| </ | </ | ||
| + | |||
| + | ===== Affichage/ | ||
| + | <code bash> | ||
| + | # | ||
| + | grep -nP ' Stéphane\t\tpointage' | ||
| + | # | ||
| + | grep -nF " - Téléphérique de l' | ||
| + | </ | ||
| + | * '' | ||
| + | * '' | ||
| + | * Pour rediriger vers un fichier ajouter à la fin '' | ||
| ==== Commandes d' | ==== Commandes d' | ||
| Ligne 133: | Ligne 179: | ||
| <code bash> cut --complement -f 36-37 synthese.csv > synthese.cuted.csv </ | <code bash> cut --complement -f 36-37 synthese.csv > synthese.cuted.csv </ | ||
| - | ===== Remplacement | + | Sélections |
| + | <code bash> cut --complement -f 2,4,7- synthese.csv > synthese.fix-2022-03-29.csv </ | ||
| - | Pour remplacer une chaine | + | **NOTES** : préalablement à l' |
| + | |||
| + | ===== Remplacer le contenu d'une colonne ===== | ||
| + | Remplacer le contenu de la 33ème colonne dans le fichier // | ||
| + | ===== Remplacement de chaîne ===== | ||
| + | |||
| + | === Remplacement de chaîne courte === | ||
| + | Pour remplacer une chaîne | ||
| '' | '' | ||
| Par exemple, pour remplacer '' | Par exemple, pour remplacer '' | ||
| Ligne 143: | Ligne 197: | ||
| </ | </ | ||
| - | Remplacement multi-lignes (option '' | + | === Remplacement de chaîne longue === |
| + | Remplacement de grande chaîne de texte avec Perl : | ||
| + | <code bash> | ||
| + | # Texte actuel | ||
| + | export OLD=" | ||
| + | # Nouveau texte | ||
| + | export NEW=" | ||
| + | # Remplacement | ||
| + | mv synthese.csv synthese.save.csv && perl -pe ' | ||
| + | </ | ||
| + | * '' | ||
| + | * Très rapide car Perl lit une ligne, la modifie si besoin, et l' | ||
| + | |||
| + | === Remplacement multi-lignes === | ||
| + | Remplacement multi-lignes | ||
| <code bash> | <code bash> | ||
| # Remplacement des retours charriot (CR) suivi de retour à la ligne (LF) (si erreur INT_MAX, voir ci-dessous) | # Remplacement des retours charriot (CR) suivi de retour à la ligne (LF) (si erreur INT_MAX, voir ci-dessous) | ||
| Ligne 151: | Ligne 219: | ||
| </ | </ | ||
| + | Remplacement multi-lignes avec Awk (rassembler 2 lignes successives) : | ||
| + | <code bash> | ||
| + | # Exemple de texte de fin de ligne : anticlinal\n | ||
| + | awk '/ | ||
| + | </ | ||
| + | * Ici la fin de ligne se termine par les caractères littérals '' | ||
| + | * '' | ||
| + | * Si la ligne ne contient pas le pattern, elle est renvoyée tel quel. | ||
| ===== Stats ===== | ===== Stats ===== | ||
| - | * Date d' | + | * Date d' |
| ===== Contourner l' | ===== Contourner l' | ||
| Ligne 171: | Ligne 247: | ||
| # Recréation du fichier synthese.csv à partir des 2 fichiers de 2 millions de lignes | # Recréation du fichier synthese.csv à partir des 2 fichiers de 2 millions de lignes | ||
| - | cat synthese.2.csv >> synthese.1.csv ; mv synthese.1.csv synthese.csv | + | cat synthese.2.csv >> synthese.1.csv ; mv synthese.1.csv synthese.csv ; rm -f synthese.2.csv |
| </ | </ | ||