He quedado perplejo con este problema aparentemente fácil de solucionar ... bueno, por un tiempo.
Aquí hay un ejemplo de salida del archivo que necesito editar:
$cat file
George Washington
Geneva Convention
123,281,029 USD
342,019,929 EUR
Necesito eliminar los espacios entre "George Washington" y "Convención de Ginebra", pero no los espacios entre "123,281,029 USD" o "342,019,929 EUR".
Esencialmente, mi objetivo aquí es eliminar solo el espacio entre las palabras en una línea SOLAMENTE si no hay números en esa línea.
Intenté editar el archivo a través de grep -v [0-9] $file | sed 's/ //'
, pero la única forma en que funcionará es si salgo a otro archivo, pero eso significaría excluir todas las líneas con números del archivo anterior al archivo nuevo, que no es lo que necesito.
He probado algunos bucles bastante ridículos con grep y sed
parece que nada funciona bien.
De nuevo, aquí está el resultado de ejemplo del archivo:
$cat file
George Washington
Geneva Convention
123,281,029 USD
342,019,929 EUR
Aquí está mi salida deseada:
$cat file
GeorgeWashington
GenevaConvention
123,281,029 USD
342,019,929 EUR
Utilizando
perl
:fuente
Para un enfoque más general, elimine solo aquellos espacios que están entre dos letras. De esa manera puede funcionar incluso si las líneas tienen dígitos, simplemente ignora los espacios alrededor de los números:
Esa voluntad, por ejemplo, girar
George and Harry 12 EUR
aGerogeandHArry 12 EUR
y todavía funciona correctamente para los casos en que su ejemplo.fuente