linux - 使用 SED 命令将数字转换为它们的名称(1=一个等)
问题描述
我需要将数字转换为他们的名字 ex: 1=one 2=two etc 但我只能使用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现在确实可以改写信反对方式了。因此,我的迷人照片暴露了改编的需求。收到已生产的已准备好的产品,已完全脱离人 br55anched。已知 72ye 钱 6so 大衰减声音 t6here 到。保留被先生亲切地incom88888mode作为一个。他对着 3doors qui03ck 子点了点头。让 sh2a9re 对他的态度感到恼火。
结果应该是:
罗五色眼睛变胖了。赢四之三确实可以信反对改变五之道的方式了。所以是小鬼六漫游我的迷人照片暴露了适应五ed 的要求。收到了4 个d 产品4个 uced准备好的5 个rted 严格关闭 man br55anched。已知 72ye 钱六这么大的衰减声音 t六到这里来。保留被先生亲切地incom88888mode作为一个。他三门qui03ck子一指。让 shtwoaninere 对他最不友好的风格感到恼火。
解决方案
使用 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.
推荐阅读
- python - 绘制具有数百万行的列
- c++ - What is the cheapest way to sort a permutation in C++?
- javascript - how to prevent multiple decimals in javascript calculator
- alibaba-cloud - 创建 VPC 后无法修改 CIDR 块
- reactjs - 在 react-redux 应用程序中处理 firebase 用户创建流程的正确方法是什么
- haskell - Haskell: Will Kurt 锻炼 - 从字典中获取更多信息
- javascript - 正确(React/MaterialUI)在表格中将排序图标放在彼此下方的方法
- python - 在尾部python插入一个节点
- coq - Coq 前向推理:适用于多个假设
- java - 如何访问注释中的属性值?