我需要使用 sed 命令编写一个 shell 脚本来用单词更改数字,例如 1->一、2->二,...,但是当我得到 2 个数字( 11, 25)时不会改变。
对此有什么想法吗?
谢谢
最佳答案
假设您像我一样正在运行不支持正则表达式断言的 sed
版本,则可以使用如下脚本运行 sed -rf myscript
:
s/(^|[^[:digit:]])1($|[^[:digit:]])/\1one\2/g
s/(^|[^[:digit:]])2($|[^[:digit:]])/\1two\2/g
...继续其他数字。分解一下:s
启动替代命令。 /(^|[^[:digit:]])1($|[^[:digit:]])/
是要替换的正则表达式。 (^|[^[:digit:]])
表示捕获行的开头或非数字的字符。 1
是文字 1。 ($|[^[:digit:]])
表示捕获行尾或非数字字符。 \1one\2
是替换字符串。 \1
添加第一个捕获组的内容。 one
添加一个字面量 1。 \2
添加第二个捕获组。末尾的 g
表示替换操作应在每行上重复尽可能多次。
关于linux - 用字符串更改数字的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29519250/