linux + solaris + удалить все символы в файле, кроме цифр и точек [закрыто]

посоветуйте, пожалуйста, как удалить все символы в файле, кроме чисел и "."

  • Должно быть реализовано с помощью sed, awk или perl (одна строка) или любой другой идеи, поэтому я добавлю синтаксис в свой сценарий ksh

примечание - решение должно соответствовать примеру в целевом файле (см. Пробелы в этом примере), поэтому другие символы (не точка или числа) будут заменены одним пробелом

, например, в исходном файле:

  192.0.22.1++0.1
  e32)5.500.5.5*kjcdr
  ##@$1.1.1.1+++jmjh
  1.1.1.1333
  33331.1.1.1
  @5.5.5.??????
  ~3de.ede5.5.5.5
  1.1.1.13444r54
  192.9.30.174
  &&^#%5.5.5.5
  :5.5.5.5@%%^^&*
  :5.5.5.5:
  **22.22.22.22
  172.78.0.1()*5.4.3.277
  3.3.3ki.3.

целевой файл после удаления всех символов, кроме цифр и "." устав

  192.0.22.1 0.1
  32 5.500.5.5
  1.1.1.1
  1.1.1.1333
  33331.1.1.1
  5.5.5.
  . 5.5.5.5
  1.1.1.13444 54
  192.9.30.174
  5.5.5.5
  5.5.5.5
  5.5.5.5
  22.22.22.22
  172.78.0.1 5.4.3.277
  3.3.3 .3.
-3
задан 15 November 2012 в 14:38
2 ответа

Используйте инвертированную группу [^. 0-9] , что означает все, кроме точки и чисел. Чтобы очистить infile , выполните:

sed 's/[^.0-9][^.0-9]*/ /g' infile

Изменить

Чтобы заменить последовательности отрицаемой группы одним пробелом, вы можете использовать обновленный ответ.

2
ответ дан 5 December 2019 в 21:52
sed 's/[^.0-9]\+/ /g;s/^ //g;s/ $//g' in-file > target-file

объяснение:

  • s / [^ .0-9] \ + / / g заменяет следующие друг за другом символы одним пробелом
  • s / ^ // g удаляет начальные пробелы
  • s / $ // g удаляет завершающие пробелы
2
ответ дан 5 December 2019 в 21:52

Теги

Похожие вопросы