Я был озадачен этой, казалось бы, простой для решения проблемы ... ну, на некоторое время.
Вот пример вывода из файла, который мне нужно отредактировать:
$cat file
George Washington
Geneva Convention
123,281,029 USD
342,019,929 EUR
Мне нужно убрать пробелы между «Джорджем Вашингтоном» и «Женевской конвенцией», но не пробелы между «123 281 029 долларов США» или «342 019 929 евро».
По сути, моя цель здесь состоит в том, чтобы удалить пробел между словами ТОЛЬКО в строке, если в этой строке нет чисел.
Я пытался редактировать файл с помощью grep -v [0-9] $file | sed 's/ //'
, но единственный способ, который будет работать, - это если я выведу в другой файл, но это будет означать исключение всех строк с номерами из старого файла в новый файл, а это не то, что мне нужно ...
Я пробовал несколько довольно смешных циклов с grep, sed
но, похоже, ничего не получилось.
Опять же, вот пример выходного файла:
$cat file
George Washington
Geneva Convention
123,281,029 USD
342,019,929 EUR
Вот мой желаемый результат:
$cat file
GeorgeWashington
GenevaConvention
123,281,029 USD
342,019,929 EUR
Использование
perl
:источник
Для более общего подхода удалите только те пробелы, которые находятся между двумя буквами. Таким образом, он может работать, даже если в строках есть цифры, он просто игнорирует пробелы вокруг чисел:
Это будет, например, обратиться
George and Harry 12 EUR
кGerogeandHArry 12 EUR
и по- прежнему работать правильно за исключением случаев , в вашем примере.источник