Fui surpreendido com este problema aparentemente simples de corrigir ... bem, por um tempo.
Aqui está um exemplo de saída do arquivo que preciso editar:
$cat file
George Washington
Geneva Convention
123,281,029 USD
342,019,929 EUR
Preciso remover os espaços entre "George Washington" e "Convenção de Genebra", mas não os espaços entre "123.281.029 USD" ou "342.019.929 EUR".
Essencialmente, meu objetivo aqui é remover apenas o espaço entre as palavras em uma linha SOMENTE se não houver números nessa linha.
Eu tentei editar o arquivo via grep -v [0-9] $file | sed 's/ //'
, mas a única maneira que funcionará é se eu enviar para outro arquivo, mas isso significaria excluir todas as linhas com números do arquivo antigo para o novo arquivo, o que não é o que eu preciso ..
Eu tentei alguns loops bastante ridículos com grep e sed
mas nada parece funcionar da maneira certa.
Novamente, aqui está o exemplo de saída do arquivo:
$cat file
George Washington
Geneva Convention
123,281,029 USD
342,019,929 EUR
Aqui está a minha saída desejada:
$cat file
GeorgeWashington
GenevaConvention
123,281,029 USD
342,019,929 EUR
Usando
perl
:fonte
Para uma abordagem mais geral, remova apenas os espaços que estão entre duas letras. Dessa forma, ele pode funcionar mesmo que as linhas tenham dígitos, mas ignora os espaços ao redor dos números:
Que a vontade, por exemplo, transformar
George and Harry 12 EUR
aGerogeandHArry 12 EUR
e ainda funcionar corretamente para os casos em seu exemplo.fonte