我需要使用sed命令编写一个shell脚本来更改其单词的数字,例如1-> 1、2-> 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
添加一个字面值。 \2
添加第二个捕获组。末尾的g
表示替换操作应在每行上重复尽可能多的次数。关于linux - Shell脚本使用字符串更改数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29519250/