Jump to content

Club Informatique du FA


Recommended Posts

sed "/toto/=" fichier

 

 

Cette commande va afficher le numéro de la ligne contenant la chaîne toto.

pense a faire un pipeline avec le résultat de sed avec cette option, tu m'a pas dit, le numéro de ligne, comment t'as pu l'avoir ?

Link to post
Share on other sites
  • Réponses 486
  • Créé
  • Last Reply

Top Posters In This Topic

test.txt

avec dedans

azerty abcdefg
zaeryt abcdefg
azeeza abcdefg

 

 

grep "^a" test.txt | sed  's/^\(.\{7\**\).\(.*\)/\1X\2/'
azerty Xbcdefg
azeeza Xbcdefg

^a ligne commencant par a

's/^\(.\{7\**\).\(.*\)/\1X\2/' remplace le 7eme caractere par un X

s/ c'est pour la substitution d'accord mais

faut d'abord comprendre ça 's/^\(.\{7\**\).\(.*\)/\1X\2/' j'ai laché au bout de deux concaténations :crazy:

je viens de trouvé le man sed en français sur le lien que je viens de publié ...

souvenir souvenir, les expressions régulières :rolleyes:

Link to post
Share on other sites
sed "s/^\(az.\{6\**\)\(.\{2\**\)/\1XY/" test.txt

ou

sed "s/^(az.{6**)(.{2**)/\1XY/" test.txt

remplacer le double etoile ** par accolade fermante

 

en une seule étape, dans le fichier test.txt, on cherche les lignes commençant par la séquence "az" et on substitue 2 caractères à partir du 6eme caractère par un X et un Y

 

^az ligne commençant par "az"

.{6** 6 occurrences de n'importe quel caractère apres le "az"

.{2** 2 occurrences de n'importe quel caractère caracteres

\1XY substitution du groupe par XY

 

resultat

azerty aXYZefg

zaeryt abcdefg

azeeza aXYZefg

merci pour ces explications, j'ai tout compris :)

donc l'INIste pourra se situé dans la ligne juste avant le mot qu'elle veut substitué par le nombre de caractère qui le précède...

ou par le nombre d'occurrence de cette chaine dans test.txt

sed "s/azerty/AZERTY/2" le sed va remplacer la 2eme occurrence de azerty par AZERTY ...

 

j'aimerai bien avoir bcp plus de détails concernant le positionnement de la chaine dans son cas ...

Link to post
Share on other sites

merci pour ces explications, j'ai tout compris :)

donc l'INIste pourra se situé dans la ligne juste avant le mot qu'elle veut substitué par le nombre de caractère qui le précède...

ou par le nombre d'occurrence de cette chaine dans test.txt

sed "s/azerty/AZERTY/2" le sed va remplacer la 2eme occurrence de azerty par AZERTY ...

 

j'aimerai bien avoir bcp plus de détails concernant le positionnement de la chaine dans son cas ...

 

Salut DeD,

C'est bon, j'ai contourné le problème puisque c'était urgent et les regexp c'est pas mon fort!!

j'ai modifié le programme qui génère mon fichier text selon mon besoin et je l'ai régénéré, tout simplement :D

 

Mais je veux bien apprendre comment ça marche les regexp, je pense que j'en aurai besoin dans le futur...

ton sed "s/azerty/AZERTY/2" je l'ai testé, il marche, mais c'est la notion de positions que je n'arrive pas à retrouver... par exemple pour remplacer les caractères qui se trouvent de la position 10 jusqu'à la position 15 de chaque ligne par "XXXXXX".

Link to post
Share on other sites
Salut DeD,

C'est bon, j'ai contourné le problème puisque c'était urgent et les regexp c'est pas mon fort!!

j'ai modifié le programme qui génère mon fichier text selon mon besoin et je l'ai régénéré, tout simplement :D

 

Mais je veux bien apprendre comment ça marche les regexp, je pense que j'en aurai besoin dans le futur...

ton sed "s/azerty/AZERTY/2" je l'ai testé, il marche, mais c'est la notion de positions que je n'arrive pas à retrouver... par exemple pour remplacer les caractères qui se trouvent de la position 10 jusqu'à la position 15 de chaque ligne par "XXXXXX".

 

 

looool j'ai fait un truc pareil la semaine dernière ^^

Link to post
Share on other sites
sed "s/^\(az.\{6\**\)\(.\{2\**\)/\1XY/" test.txt

ou

sed "s/^(az.{6**)(.{2**)/\1XY/" test.txt

remplacer le double etoile ** par accolade fermante

 

en une seule étape, dans le fichier test.txt, on cherche les lignes commençant par la séquence "az" et on substitue 2 caractères à partir du 6eme caractère par un X et un Y

 

^az ligne commençant par "az"

.{6** 6 occurrences de n'importe quel caractère apres le "az"

.{2** 2 occurrences de n'importe quel caractère caracteres

\1XY substitution du groupe par XY

 

resultat

azerty aXYZefg

zaeryt abcdefg

azeeza aXYZefg

 

c'est trop compliqué, mais je pense que ça répond à mon besoin, demain je le teste et je vous dirai si c'est ok!!

 

Merci beaucoup :)

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Répondre

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...