La commande /d de sed supprime ce qui a était "matché" par l'expression. Donc si on veut supprimer une ligne il faut matcher toute la ligne. Dans le langage d'expression de sed (je ne sais pas si ça fait partie des expressions régulières basiques ou étendues ou PCRE), $ est la fin de ligne (comme dans ex ou vi) et ^ est le début de ligne (donc /^a$/ matche les lignes qui sont composées d'un unique a). Le . est le jocker (non il tue pas batman), il remplace n'importe quel caractère et * est un quantifieur qui signifie que l'expression avant peut être répétées 0, 1 ou plusieurs fois.
Cette expression :
/^.* .*$/
signifie donc que je cherche toutes les lignes (grâce au ^ et au $) qui commencent éventuellement par une chaîne quelconque et finissent éventuellement par une chaîne quelconque, mais on forcément un espace (au milieu, au début ou à la fin de la ligne.
Bref grep est carrément tout indiqué car il travail directement avec les lignes. Sont objectif est de filtrer.
grep ' '
garde toutes les lignes qui ont un espace et l'option -v inverse le résultat (ne garde que les lignes qui n'ont pas d'espace).
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Tout simplement
Posté par barmic . En réponse au message [sed] Effacer les lignes d'un fichier [Résolu]. Évalué à 3.
Tu as raison j'ai étais un peu expéditif.
La commande /d de sed supprime ce qui a était "matché" par l'expression. Donc si on veut supprimer une ligne il faut matcher toute la ligne. Dans le langage d'expression de sed (je ne sais pas si ça fait partie des expressions régulières basiques ou étendues ou PCRE), $ est la fin de ligne (comme dans ex ou vi) et ^ est le début de ligne (donc /^a$/ matche les lignes qui sont composées d'un unique a). Le . est le jocker (non il tue pas batman), il remplace n'importe quel caractère et * est un quantifieur qui signifie que l'expression avant peut être répétées 0, 1 ou plusieurs fois.
Cette expression :
signifie donc que je cherche toutes les lignes (grâce au ^ et au $) qui commencent éventuellement par une chaîne quelconque et finissent éventuellement par une chaîne quelconque, mais on forcément un espace (au milieu, au début ou à la fin de la ligne.
Bref grep est carrément tout indiqué car il travail directement avec les lignes. Sont objectif est de filtrer.
garde toutes les lignes qui ont un espace et l'option -v inverse le résultat (ne garde que les lignes qui n'ont pas d'espace).
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)