Comment puis-je utiliser sed pour supprimer des nombres décimaux à partir d'une chaîne?
J'ai la chaîne suivante (exemple):
ex. "Abandonné 16 1.10 2.62 3.50"
Je voudrais pipe ce résultat à la sed et de supprimer tous les nombres décimaux pour me laisser avec les éléments suivants:
ex. "Abandonné 16"
J'ai été en utilisant la commande suivante: sed 's/.//g'
qui apparemment ne fonctionne pas.
Quelqu'un peut-il me faire savoir comment utiliser le caractère générique avec sed pour supprimer quelque chose correspondant à ".".
Grâce
OriginalL'auteur Dan | 2011-06-28
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas dit ce que vous voulez faire avec l'espace, mais que diriez -
OriginalL'auteur Beta
ce serait plus facile avec
awk
, au moins pour moiecho "Abandoned 16 1.10 2.62 3.50" | awk '{print $1FS$2}'
mais c'est la liste de nombres aléatoires par la suite?
si oui, cela fonctionne aussi
echo "Abandoned 16 1.10 2.62 3.50" | sed -r 's/\s([0-9]+)\.([0-9]+)//g'
noter que
\s
attrape le blanc de l'espace, et que les chiffres avant et après la virgule sont enregistrés, donc si vous voulez les conserver et de faire quelque chose avec eux, vous pouvez y accéder avec\1
et\2
respectueusementPourquoi attraper le blanc space? eh bien, imaginez si 16 est venu après 3.50 dans votre exemple, vous serait alors de retour
Abandoned [5spaces*] 16
*Je ne peux insérer un espace dans ce
<textarea>
ne voulez-vous de garder les espaces? vous avez demandé "Abandonné 16"
awk '{print$1FS$2}'
devrait le faire à partir de votre chaîne. remarque leFS
qui est le séparateur de champ, dans ce cas, un espace.OriginalL'auteur matchew
Trowing dans un awk solution boucles ovewr l'entrée et ignore les entrées avec une période dans leur
OriginalL'auteur Fredrik Pihl