Comment supprimer le dernier caractère uniquement s'il est là?
contribution:
OpenOffice.org/m openOffice.org/ozm Pers. Pfg. phil. Prof. resp. Roonstr./m roonstr./ozm
Sortie désirée:
OpenOffice.org openOffice.org Pers Pfg phil Prof resp Roonstr roonstr
Je l'ai si loin que seul le point est laissé, mais malheureusement, la dernière commande sed supprime également la lettre g
:
$ cat filename | grep "\." | cut -d"/" -f1 | sed 's/.$//'
text-processing
grep
sed
enlevezdotonlysi il y a
la source
la source
sed -n '/\./{s=/[^/]*$==;s/\.$//;p}
. Quoi qu'il en soitgrep
+sed
fonctionnera beaucoup plus longtemps qu'un seulsed
.sed 's/[./]\+[^./]*$//'
Supprimer un caractère uniquement s'il y est correspond exactement à la description des extensions de paramètres.
Le point n'est pas spécial dans ce cas (un point est spécial dans une expression régulière).
L'autre modèle pourrait être supprimé avec
%/*
:Pour supprimer les deux:
Bien sûr, pour travailler avec un fichier source, il est plus rapide d'utiliser sed sur le fichier.
N'oubliez pas de citer le point (pour le faire correspondre littéralement, sinon cela signifie: n'importe quel caractère).
la source
Changez juste légèrement votre expression régulière: pour échapper au
.
Et vous n'avez pas besoingrep
la source