linux - 用字符串更改数字的 Shell 脚本

标签 linux shell sed digits

我需要使用 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/

相关文章:

shell脚本上的bash无效算术运算符

linux - 如何替换两点之间的所有行并将其替换为sed中的一些文本

linux - 执行一条命令,检查某个分区上的磁盘空间是否大于 1 KB,返回 -1 否则返回 0

linux - 如何用awk计算文件中的所有数字?

Linux 命令 df 提取 "name"和 "available space"

windows - 如何更改 emacs shell 中使用的行结束样式(回车/换行)?

linux - 在linux中获取第N行多个文件

linux - 如何使用sed将目录下所有文件的windows路径更改为linux路径

python - 我如何通过守护线程收听标准输入

python - 命令在 bash 终端中工作,但在 Python subprocess.Popen() 中不工作;收到 'paths must precede expression: ` %p' 错误