Bonjour à tous,
Voici mon objectif : J'ai un fichier texte brut. Je dois insérer un séparateur (pipe) à intervalles réguliers avec gestion des erreurs (avec un compte rendu).
J'ai donc essayé le fonctionnement suivant :
- décompte des lignes du fichier d'origine,
- décompte des caractères par ligne :
- si le nombre de caractères n'est pas celui attendu on enlève la ligne du fichier et on la colle dans le fichier "analyse" avec son numéro de ligne
- si le nombre de caractères est correcte, on insert les séparateurs
- Nouveau décompte de ligne et comparaison avec le premier pour connaitre le nombre d'erreurs
L'insertion des pipes fonctionnent bien ainsi que le décompte des lignes.
Le problème que je n'arrive pas à résoudre c'est de couper les lignes défectueuses et les insérer dans un autre fichier (mon code ne fonctionne absolument pas pour cette partie).
Si vous pouviez me donner un petit coup de pouce pour cela se serait sympa.
Ci-dessous le code que j'ai réalisé :
Merci de votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #! /bin/awk -f #! /bin/sed -f wc -l flux.txt >> analyse awk '{ if (length($0) != 13) { awk 'NR==$0, NR==$0{print>\"analyse\"} NR<$0||NR>$0}' flux.txt >> flux.txt } else { sed -e '{s/\(.\{33\}\)\(.\{3}\)\(.\{13\}\)\(.\{10\}\)\(.\{4\}\)\(.\{3\}\)\(.\{18\}\)\(.\{1\}\)\(.\{6\}\)/ \1|\2|\3|\4|\5|\6|\7|\8|\9/}' -e '{s/\(.\{99\}\)\(.\{3\}\)\(.\{1\}\)\(.\{5\}\)\(.\{10\}\)\(.\{10\}\)\(.\{10\}\)\(.\{10\}\)\(.\{1\}\)/ \1|\2|\3|\4|\5|\6|\7|\8|\9/}' -e '{s/\(.\{157\}\)\(.\{15\}\)\(.\{2\}\)\(.\{10\}\)\(.\{10\}\)\(.\{10\}\)\(.\{10\}\)\(.\{1\}\)/ \1|\2|\3|\4|\5|\6|\7|\8/}' flux.txt > resultat_flux.txt } } wc -l resultat_flux.txt
Partager