[bash] Ajouter des colonnes à un fichier
Résolu/Fermé
tibofx
Messages postés
14
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
23 janvier 2008
-
4 janv. 2008 à 18:25
tibofx Messages postés 14 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 23 janvier 2008 - 4 janv. 2008 à 20:47
tibofx Messages postés 14 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 23 janvier 2008 - 4 janv. 2008 à 20:47
A voir également:
- [bash] Ajouter des colonnes à un fichier
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir un fichier .bin - Guide
- Comment faire des colonnes sur word - Guide
8 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
4 janv. 2008 à 19:19
4 janv. 2008 à 19:19
Salut,
Si toutes les colonnes ne comportent qu'un seul caractère, tu peux essayer ça :
Un petit exemple :
Si toutes les colonnes ne comportent qu'un seul caractère, tu peux essayer ça :
sed -e ':boucle;s/^.\{1,800\}$/& 0/; t boucle' fichierSi c'est concluant, tu peux soit redirigé la sortie (> fichier.sortie), soit si tu as une version de GNU sed 4.0 ou supérieure utiliser le switch "-i".
Un petit exemple :
$ cat plop 1 2 3 4 5 6 7 8 9 1 5 6 3 2 5 9 7 8 2 6 0 1 1 5 9 5 1 $ sed -e ':boucle;s/^.\{1,20\}$/& 0/; t boucle' plop 1 2 3 4 5 6 7 8 9 0 0 1 5 6 3 0 0 0 0 0 0 0 2 5 9 7 8 0 0 0 0 0 0 2 6 0 1 1 5 0 0 0 0 0 9 5 1 0 0 0 0 0 0 0 0;-))
tibofx
Messages postés
14
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
23 janvier 2008
4 janv. 2008 à 19:39
4 janv. 2008 à 19:39
Salut, et merci pour ta réponse ! En effet ça me fait bien l'effet que tu me décris, mais le probleme est que je voudrais le faire seulement une ligne sur deux, car avant chacune de ces lignes de nombres, j'ai un en-tête sur une ligne. Donc je m'y replonge !
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
4 janv. 2008 à 20:01
4 janv. 2008 à 20:01
Essaye ça alors :
$ cat plop 1er en-tête 1 2 3 4 5 6 7 8 9 2ème en-tête 1 5 6 3 3ème en-tête 2 5 9 7 8 4ème en-tête 2 6 0 1 1 5 5ème en-tête 9 5 1 $ sed -e '2~2 {:boucle;s/^.\{1,20\}$/& 0/; t boucle}' plop 1er en-tête 1 2 3 4 5 6 7 8 9 0 0 2ème en-tête 1 5 6 3 0 0 0 0 0 0 0 3ème en-tête 2 5 9 7 8 0 0 0 0 0 0 4ème en-tête 2 6 0 1 1 5 0 0 0 0 0 5ème en-tête 9 5 1 0 0 0 0 0 0 0 0;-))
tibofx
Messages postés
14
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
23 janvier 2008
4 janv. 2008 à 20:15
4 janv. 2008 à 20:15
En fait ça me fait des choses bizarres cette affaire, exemple :
#Input 1
0 0 0 0 1 0 0 0 0 0 2
#Output 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#Input 2 0 0 0 0 0 0 0
0 2 0 0 1 0 0
#Output 2 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Donc en gros ça me rajoute une fois sur deux des zeros aux en-têtes !! Merci quand même pour ta réponse, maintenant je vais plutot chercher, à partir de ta première solution, les en-têtes (qui sont dc maintenant de la forme #Input 2 0 0 0 0 0 0 ) et les remplacer par les en-têtes normaux (#Input x ou #Output x)
#Input 1
0 0 0 0 1 0 0 0 0 0 2
#Output 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#Input 2 0 0 0 0 0 0 0
0 2 0 0 1 0 0
#Output 2 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Donc en gros ça me rajoute une fois sur deux des zeros aux en-têtes !! Merci quand même pour ta réponse, maintenant je vais plutot chercher, à partir de ta première solution, les en-têtes (qui sont dc maintenant de la forme #Input 2 0 0 0 0 0 0 ) et les remplacer par les en-têtes normaux (#Input x ou #Output x)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
4 janv. 2008 à 20:16
4 janv. 2008 à 20:16
Si l'en-tête ne commence pas par un chiffre mais par tout autre caractère, alors il vaut mieux cette syntaxe :
sed -e '/^[0-9]/ {:boucle;s/^.\{1,20\}$/& 0/; t boucle}';-))
tibofx
Messages postés
14
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
23 janvier 2008
4 janv. 2008 à 20:33
4 janv. 2008 à 20:33
Ah merci bien !!! Juste un détail encore que je suis entrain d'essayer de régler, c'est que je ne voulais pas toucher aux chiffres qui suivent mes "Output x", et seulement mes "Input x"... J'y retourne j'y retourne, mais merci beaucoup tes réponses sont toujours rapides claires et efficaces c'est génial !
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
4 janv. 2008 à 20:41
4 janv. 2008 à 20:41
$ cat bar #Input 1 0 0 0 0 1 0 0 0 0 0 2 #Output 1 1 0 0 0 0 0 0 0 0 0 0 0 #Input 1 0 0 0 0 1 0 0 0 0 0 2 #Output 1 1 0 0 0 0 0 0 0 0 #Input 1 0 0 0 0 1 0 0 0 0 0 2 #Output 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 $ sed -e '/^#Input/ {n; :boucle;s/^.\{1,30\}$/& 0/; t boucle}' bar #Input 1 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 #Output 1 1 0 0 0 0 0 0 0 0 0 0 0 #Input 1 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 #Output 1 1 0 0 0 0 0 0 0 0 #Input 1 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 #Output 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0;-))
tibofx
Messages postés
14
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
23 janvier 2008
4 janv. 2008 à 20:47
4 janv. 2008 à 20:47
..merci ! c'est bien ce que je pensais ;)