Remplacer chaîne dans ligne fichier
Fermé
PIkolloh
Messages postés
5
Date d'inscription
mercredi 7 mars 2018
Statut
Membre
Dernière intervention
8 mars 2018
-
7 mars 2018 à 00:08
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 - 8 mars 2018 à 09:32
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 - 8 mars 2018 à 09:32
A voir également:
- Remplacer chaîne dans ligne fichier
- Fichier rar - Guide
- Fichier host - Guide
- Fichier iso - Guide
- Comment réduire la taille d'un fichier - Guide
- Remplacer dans word - Guide
2 réponses
UnGnU
Messages postés
1158
Date d'inscription
lundi 2 mai 2016
Statut
Contributeur
Dernière intervention
22 décembre 2020
157
7 mars 2018 à 08:03
7 mars 2018 à 08:03
Salut,
Je remplace cette zone par AIXQu'appelles-tu "zone" ? Toute la ligne ? Ou simplement un bout ?
dubcek
Messages postés
18718
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
22 mars 2024
5 615
Modifié le 7 mars 2018 à 14:41
Modifié le 7 mars 2018 à 14:41
hello
$ cat fich A1 91190abc76TEST878 67890U A2 75150cdc87JEUX767 765896 A1 91190abc76TOTO878 67890U A2 75150cdc87JEUX767 765896 $ awk 'BEGIN {FIELDWIDTHS="4 10 4 3 3 6"; OFS=""} $1=="A1 " && $3=="TEST" && $5==" " && NR<2 {$5="AIX"} 1' fich A1 91190abc76TEST878AIX67890U A2 75150cdc87JEUX767 765896 A1 91190abc76TOTO878 67890U A2 75150cdc87JEUX767 765896
PIkolloh
Messages postés
5
Date d'inscription
mercredi 7 mars 2018
Statut
Membre
Dernière intervention
8 mars 2018
8 mars 2018 à 00:23
8 mars 2018 à 00:23
le résultat parle de lui même mais je n'ai comprends rien non plus à la commande...
Pourrais-tu m’éclairer sur la commande si possible?
Pourrais-tu m’éclairer sur la commande si possible?
dubcek
Messages postés
18718
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
22 mars 2024
5 615
8 mars 2018 à 09:32
8 mars 2018 à 09:32
{FIELDWIDTHS="4 10 4 3 3 6" on definit les 4 premiers car. comme le champ 1, les 10 suivants comme le champ 2, les 4 suivants comme le champ 3, etc
OFS="" en sortie, le séparateur de champ est vide
$1=="A1 " && $3=="TEST" && $5==" " && NR<2 on teste les champs selon les conditions émises au post #1
{$5="AIX"} on remplace le champ 5 si les conditions sont remplies
1 on imprime, 1 tout seul == {print $0]}
OFS="" en sortie, le séparateur de champ est vide
$1=="A1 " && $3=="TEST" && $5==" " && NR<2 on teste les champs selon les conditions émises au post #1
{$5="AIX"} on remplace le champ 5 si les conditions sont remplies
1 on imprime, 1 tout seul == {print $0]}
7 mars 2018 à 08:14
Si y’a d’autre zone à espace ailleurvdans la ligne le je n’y touche pas
Modifié le 7 mars 2018 à 11:14
Si tu ne veux cibler que la 1ère ligne tu rajoutes un "1" devant le "s".
8 mars 2018 à 00:20
Par contre, je reste de la commande, je n'ai comprends pas grand chose..tu pourrais m'expliquer les différents blocs suivants?
Merci de ton aide
8 mars 2018 à 00:44
sed: illegal option -- i
Usage: sed [-n] [-u] Script [File ...]
sed [-n] [-u] [-e Script] ... [-f Script_file] ... [File ...]
8 mars 2018 à 07:39
Concernant les explications, tout est expliqué là : Les sous-expressions et références arrières
Concernant ton problème d'erreur, c'est que tu ne dois pas être sur un système GNU/Linux, mais sur un système Unix (AIX ?) qui ne comprend que très peu d'options (-n, -u et -e) ;-\
Tu n'auras pas d'autres choix que de passer par un fichier temporaire ;-(