преобразовать числа в их имена (1 = один и т. д.) с помощью команды SED - PullRequest
0 голосов
/ 11 апреля 2019

Мне нужно преобразовать цифры в их имя, например: 1 = одна 2 = две и т. Д., Но я могу использовать только команду SED .Должны измениться только однозначные числа.

sed 's/[1]/one/g; s/[2]/two/g; s/[3]/three/g; s/[4]/four/g; s/[5]/five/g; s/[6]/six/g; s/[7]/seven/g; s/[8]/eight/g; s/[9]/nine/g; s/[0]/zero/g'

Текст:

Глаза Lo5se толстеют.Win4ter действительно может противостоять изменениям букв.Таким образом, улучшенная моя очарованная картина выставила адаптированные требования.Получено было произведено подготовленное погружение строго от человека, заброшенного.Известные 72ые деньги 6с таким большим распадом голоса т6 здесь.Сохранено быть сердечно несерьезным.Он 3двери ребенка.Sh2a9re разозлился спереди хотя бы стилем его.

Результат должен быть таким:

Lo пять SE глаза толстеют.Win four ter действительно может поменять букву против изменения пути, т.е. te five nded сейчас.Так же и бес шесть бродят по моей очарованной картине, приспосабливаясь к пяти ред требованиям.Получено было четыре d продукта четыре подготовленного подготовленного погружения пять строго от человека, заброшенного.Известные 72ые деньги шесть такой большой голос распада т шесть здесь.Сохранено быть сердечно несерьезным.У него три двери, на которые у ребенка есть точка.Если бы он был недоволен тем, почему его.

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Это может сработать для вас (GNU sed):

sed -E 's/[0-9]+/\n&/g;s/\n(.[0-9])/\1/g;s/$/\n1one2two3three4four5five6six7seven8eight9nine0zero/;:a;s/\n(.)(.*\n.*\1([^0-9]+))/\3\2/;ta;P;d' file

Добавить новую строку к каждой группе номеров.

Удалить добавленную новую строку для чисел, состоящих более чем из двух цифр.

Добавить символ новой строки и таблицу поиска в конец строки.

Используйте цикл и сопоставление с образцом, чтобы заменить каждую отдельную цифру литералом, гарантируя, что таблица поиска сохраняется.

Вывести исправленную текущую строку без таблицы соответствия.

1 голос
/ 11 апреля 2019

С помощью sed, который имеет -E для включения ERE и распознает \n как означающий символ новой строки (например, GNU sed):

sed -E 's/(^|[^0-9])([0-9])([^0-9]|$)/\1\n\2\n\3/g; s/\n1\n/one/g; s/\n2\n/two/g; s/\n3\n/three/g; s/\n4\n/four/g; s/\n5\n/five/g; s/\n6\n/six/g; s/\n7\n/seven/g; s/\n8\n/eight/g; s/\n9\n/nine/g; s/\n0\n/zero/g' file
Lofivese eyes get fat shew. Winfourter can indeed letter oppose way change tefivended now. So is impsixrove my charmed picture exposed adaptfiveed demands. Received had enfourd prodfouruced prepared divefiverted strictly off man br55anched. Known 72ye money sixso large decay voice tsixhere to. Preserved be mr cordially incommode as an. He threedoors qui03ck child an point at. Had shtwoa9re vexed front least style off why him.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...