J'ai été perplexe avec ce problème apparemment simple à résoudre .. enfin, pendant un certain temps.
Voici un exemple de sortie du fichier que je dois modifier:
$cat file
George Washington
Geneva Convention
123,281,029 USD
342,019,929 EUR
Je dois supprimer les espaces entre "George Washington" et "Convention de Genève", mais pas les espaces entre "123 281 029 USD" ou "342 019 929 EUR".
Essentiellement, mon objectif ici est de supprimer uniquement l'espace entre les mots d'une ligne s'il n'y a pas de chiffres sur cette ligne.
J'ai essayé d'éditer le fichier via grep -v [0-9] $file | sed 's/ //'
, mais la seule façon de fonctionner est de produire un autre fichier, mais cela signifierait exclure toutes les lignes avec des numéros de l'ancien fichier vers le nouveau fichier, ce qui n'est pas ce dont j'ai besoin ..
J'ai essayé des boucles assez ridicules avec grep et sed
mais rien ne semble fonctionner correctement.
Encore une fois, voici l'exemple de sortie du fichier:
$cat file
George Washington
Geneva Convention
123,281,029 USD
342,019,929 EUR
Voici ma sortie souhaitée:
$cat file
GeorgeWashington
GenevaConvention
123,281,029 USD
342,019,929 EUR
En utilisant
perl
:la source
Pour une approche plus générale, supprimez uniquement les espaces situés entre deux lettres. De cette façon, cela peut fonctionner même si les lignes ont des chiffres, il ignore simplement les espaces autour des chiffres:
Cette volonté, par exemple, tourner
George and Harry 12 EUR
àGerogeandHArry 12 EUR
et toujours fonctionner correctement pour les cas dans votre exemple.la source