Sed - Remplacer la dernière occurrence de match pour chaque ligne
J'ai donc le fichier suivant:
Carlton 3053
Carlton North 3054
Docklands 3008
East Melbourne 3002
Flemington 3031
Kensington 3031
Melbourne 3000
Melbourne 3004
North Melbourne 3051
St Kilda East 3183
Je veux remplacer le dernier espace juste avant les nombres avec un trait d'union, c'est le plus proche que j'ai
cat file.txt | sed -r 's/\ /\-/g'
Mais cela remplace tous les espaces avec un -
Je veux que la sortie ressemble à ceci:
Carlton-3053
Carlton North-3054
Docklands-3008
East Melbourne-3002
Flemington-3031
Kensington-3031
Melbourne-3000
Melbourne-3004
North Melbourne-3051
St Kilda East-3183
Des idées?
Notez que tant que vous voulez juste faire un remplacement,
/g
n'est pas nécessaire.OriginalL'auteur bk201 | 2014-04-04
Vous devez vous connecter pour publier un commentaire.
Quoi à ce sujet?
([^ ]*)$
captures d'espace + "ce qui n'est pas un espace jusqu'à la fin de la ligne".-\1
impression trait d'union + le savait "rien n'étant pas un espace jusqu'à la fin de la ligne".OriginalL'auteur fedorqui
Vous savez comment faire pour remplacer le premier espace, droit?
OriginalL'auteur choroba
Votre tentative était proche. Vous avez juste besoin de capturer tout ce qui est avant l'espace et le besoin d'une barre oblique inverse de référence dans la zone de remplacement. Je ne sais pas pourquoi vous vous êtes échappé de l'espace et un trait d'union.
Pour votre entrée, il produit:
OriginalL'auteur devnull
Voici un
awk
variation:OriginalL'auteur Jotne
Suivantes travaille également sur OSX depuis
sed -r
n'est pas disponible là:OriginalL'auteur blackjacx