Я использовал бы жемчуг для этого вместо этого:
$ perl -pe 's/\b(\d{3})(\d{3})(\d{4})\b/$1-$2-$3/' foo.txt
atewfnwieug 820-491-9561
adw 891-561-7141
Можно также сделать это на месте, sed
- как:
$ perl -i.bak -pe 's/\b(\d{3})(\d{3})(\d{4})/$1-$2-$3\b/' foo.txt
Если Ваши номера телефона могут быть смежны с буквами как это:
abcd1234567890abc
abcd1234567890
1234567890abc
можно использовать этого вместо этого:
$ perl -pe 's/([^\d]*)(\d{3})(\d{3})(\d{4})([^\d]*)/$1$2-$3-$4$5/' foo.txt
abcd123-456-7890abc
abcd123-456-7890
123-456-7890abc
Весь этот выбор предполагает, что номера телефона являются всегда 10 цифрами долго как в Вашем примере.
Я нашел преступника.
Это действительно произошло из-за неправильной подмены. Мой fstab
перечислил /dev/mapper/cryptswap
как пространство подкачки. Этого не было. Я думаю, что как только системе понадобилось подкачивать, она увидела, что пространство подкачки определено, но это устройство нигде не существовало.
Для тестирования я просто создал пустые файлы как пространство подкачки. С тех пор, кажется, что машина работает гораздо стабильнее. С тех пор у меня не было шипов/разломов. Но я do вижу, что используются новые файлы подкачки.