insérer un espace entre deux caractères dans un fichier texte avec awk ou sed

J’ai le fichier texte suivant:

20170110 120000 'Location ' 67.57-164.07 30.0 3.78 128.6 0.00 270.0 

Maintenant, ce que je veux, c’est insérer un espace entre 67.57 et -164.07 pour que le fichier texte ressemble maintenant à:

 20170110 120000 'Location ' 67.57 -164.07 30.0 3.78 128.6 0.00 270.0 

Je sais que je peux utiliser une commande awk ou sed et que j’ai consulté des informations à ce sujet, mais les informations disponibles étaient vagues et non spécifiques à ce que je cherchais. Avez-vous des suggestions sur ce que je pourrais faire pour obtenir les résultats souhaités?

Ajouter un espace avant le premier - :

 sed "s/-/ &/" file 

Pour append un espace devant chaque - non précédé par un espace en utilisant sed:

 $ sed 's/\([^[:blank:]az]\)-/\1 -/g' file 20170110 120000 'Location-aware ' 67.57 -164.07 30.0 3.78 128.6 0.00 270.0 

Edit : Changé [^ ] à [^[:blank:]az] pour suggestion par @ Neron-Le-Velu; D.

 sed 's/^\('[^']*[[:blank:]]*\.[0-9]\{1,2\}\)-/\1 -/' YourFile 

En supposant que l’espace doit être inséré après le premier nombre après la chaîne entre guillemets qui a au moins 1 valeur décimale directement suivie par un “-”

Ne sachant pas la valeur et le format est trop lazzy pour permettre des modifications spécifiques, vous devriez en assumer quelques-unes (comme la taille “field”, le format du champ, …)

Voici un petit morceau dans awk. Mais cela ne fait que travailler pour votre cas particulier car il y a une valeur fixe dans cette seule ligne.

 'NR==2{gsub("-164.07"," -164.07")}{ print}' your_file