Оператор
permissive
позволяет типу bash_t
работать в разрешительном режиме (вместо запуска всей системы в разрешающем режиме ). Разрешающий режим устанавливается с помощью semanage
.
С GNU sed. Удалите ведущий (
и замените -
, )
и /
пробелом :
sed 's/^(//; y|-)/| |' file
Выход:
031 5440 6622 021 8886 3877 555 532 2662
Если ваши данные постоянно состоят из трех блоков цифр с любым разделителем, это должно сработать:
grep -Eo "[0-9]+" phone.txt \
| paste -d- - - -
Это не будет работать правильно, если какой-либо телефонный номер отличается от трех блоков. Хотя это и не является одним из ваших требований, из-за того, как он работает, он также должен работать, если строка содержит несколько телефонных номеров или телефонный номер разбит на несколько строк — при условии, что каждый номер содержит ровно три блока.
grep -Eo "[0-9]+" phone.txt
Извлекает последовательные блоки цифр, результаты разбиваются по одному блоку на строку.
paste -d- - - -
Разверните данные так, чтобы в каждой строке отображалось 3 блока с дефисом в качестве разделителя.
В качестве альтернативы, если ваши данные несколько менее последовательны:
sed -r 's/[^0-9]+/-/g;s/^-//;s/-$//' phone.txt
s/[^0-9]+/-/g
замените любое числовое значение, отличное от -, дефисом
s/^-//
удалить начальные дефисы
s/-$//
удалите дефисы в конце