Sed remplacer - par _
Résolu
                                    
                        Utilisateur anonyme                    
                                    -
                                     
zipe31 Messages postés 38797 Statut Contributeur -
        zipe31 Messages postés 38797 Statut Contributeur -
        Bonjour, 
je voudrais remplacer les - par des _ :
S-1-5-21-1119404543-3273515248-2536353511-2784
par
S_1_5_21_1119404543_3273515248_2536353511_2784
En gros je voudrais avoir une formule SED qui lise un fichier contenant des milliers de chaines du type
S-digit-digit-digit-digit-digit-digit-digit
par
S_digit_digit_digit_digit_digit_digit_digit
pourriez-vous m'indiquer la formule ? cela fait un petit moment que je cherche sur sed online mais je galère :x
merci!
                
            
                
    
    
    
        je voudrais remplacer les - par des _ :
S-1-5-21-1119404543-3273515248-2536353511-2784
par
S_1_5_21_1119404543_3273515248_2536353511_2784
En gros je voudrais avoir une formule SED qui lise un fichier contenant des milliers de chaines du type
S-digit-digit-digit-digit-digit-digit-digit
par
S_digit_digit_digit_digit_digit_digit_digit
pourriez-vous m'indiquer la formule ? cela fait un petit moment que je cherche sur sed online mais je galère :x
merci!
Configuration: Windows / Firefox 77.0
            
            
        A voir également:         
- Sed remplacer - par _
- Remplacer disque dur par ssd - Guide
- Remplacer par word - Guide
- Remplacer coco - Accueil - Réseaux sociaux
- Quel site pour remplacer coco - Accueil - Réseaux sociaux
- Remplacer carte graphique - Guide
4 réponses
                        
                    Salut,
En espérant qu'il n'existe aucun autre tiret ( - ) dans ton fichier…
Exemple :
 
 
                
                
    
                En espérant qu'il n'existe aucun autre tiret ( - ) dans ton fichier…
sed 's/-/_/g' fichierà tester pour voir si la sortie te convient, et si c'est bon, pour une modification du fichier, rajouter "
-i.bak" pour une modification directe avec une sauvegarde au cas ou…
sed -i.bak 's/-/_/g' fichier
Exemple :
$ cat fich
S-1-5-21-1119404543-3273515248-2536353511-2784
$ sed 's/-/_/g' fich
S_1_5_21_1119404543_3273515248_2536353511_2784
$ cat fich
S-1-5-21-1119404543-3273515248-2536353511-2784
$ sed -i.bak 's/-/_/g' fich
$ cat fich
S_1_5_21_1119404543_3273515248_2536353511_2784
$ cat fich.bak
S-1-5-21-1119404543-3273515248-2536353511-2784
                        
                    et justement si, il y a d'autres - dans le fichiers qui eux sont bon.
c'est pourquoi justement je cherche à remplacer ce - par un _ spécifiquement dans cette chaine de caractère.
je connaissais le sed -e 's/-/_/g'
    
                c'est pourquoi justement je cherche à remplacer ce - par un _ spécifiquement dans cette chaine de caractère.
je connaissais le sed -e 's/-/_/g'
                        
                    17-KUILM\KUOLM\3-HECTO PASCAL\3-COMPTE RENDU
D:PAI(A;OICI;FA;;;BA)(A;OICI;FA;;;SY)(A;OICIIO;FA;;;CO)(A;;0x1200af;;;S-1-5-21-1119404343-3273519248-2536323511-2897)(A;OICIIO;0x1301bf;;;S-1-5-21-1119404343-3273519248-2536323511-2897)
par
17-KUILM\KUOLM\3-HECTO PASCAL\3-COMPTE RENDU
D:PAI(A;OICI;FA;;;BA)(A;OICI;FA;;;SY)(A;OICIIO;FA;;;CO)(A;;0x1200af;;;S_1_5_21_1119404343_3273519248_2536323511_2897)(A;OICIIO;0x1301bf;;;S_1_5_21_1119404343_3273519248_2536323511_2897)
    
                D:PAI(A;OICI;FA;;;BA)(A;OICI;FA;;;SY)(A;OICIIO;FA;;;CO)(A;;0x1200af;;;S-1-5-21-1119404343-3273519248-2536323511-2897)(A;OICIIO;0x1301bf;;;S-1-5-21-1119404343-3273519248-2536323511-2897)
par
17-KUILM\KUOLM\3-HECTO PASCAL\3-COMPTE RENDU
D:PAI(A;OICI;FA;;;BA)(A;OICI;FA;;;SY)(A;OICIIO;FA;;;CO)(A;;0x1200af;;;S_1_5_21_1119404343_3273519248_2536323511_2897)(A;OICIIO;0x1301bf;;;S_1_5_21_1119404343_3273519248_2536323511_2897)
                        
                    finalement c'est ok j'ai trouvé :
voici la formule :
sed -e 's/\(.\)-\([[:digit:]]*\)-\([[:digit:]]*\)-\([[:digit:]]*\)-\([[:digit:]]*\)-\([[:digit:]]*\)-\([[:digit:]]*\)-\([[:digit:]]*\)/\1_\2_\3_\4_\5_\6_\7/g'
merci pour tout ( :
    
                voici la formule :
sed -e 's/\(.\)-\([[:digit:]]*\)-\([[:digit:]]*\)-\([[:digit:]]*\)-\([[:digit:]]*\)-\([[:digit:]]*\)-\([[:digit:]]*\)-\([[:digit:]]*\)/\1_\2_\3_\4_\5_\6_\7/g'
merci pour tout ( :
