在字母和数字之间插入逗号

JDY*_*JDY 1 regex bash perl

我是编程的初学者,并且有关于正则表达式匹配的快速问题,并且想知道bash或perl中是否存在快速解决方案以解决以下问题:

我的文件看起来像这样.

Boy0.545, 35, 63, 75  
Girl, 63, 723, 845, 45  
Human13, 453, 634, 43
Run Code Online (Sandbox Code Playgroud)

每当一行中的一个数字被直接跟随后,我将如何插入逗号?我正在阅读一些正则表达式,感觉像这样的东西可以工作:/ ^ [:alpha:] [:digit:] $ /但我不确定如何继续.我想拥有

Boy, 0.545, 35, 63, 75  
Girl, 63, 723, 845, 45  
Human, 13, 453, 634, 43
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.为这个简单的问题道歉!谢谢!

Wil*_*ill 6

试试这个:

$ cat testfile
Boy0.545, 35, 63, 75
Girl, 63, 723, 845, 45
Human13, 453, 634, 43

$ sed 's/\([A-Za-z]\)\([0-9]\)/\1, \2/g' testfile
Boy, 0.545, 35, 63, 75
Girl, 63, 723, 845, 45
Human, 13, 453, 634, 43
Run Code Online (Sandbox Code Playgroud)

\([A-Za-z]\)\([0-9]\)捕获组,其通过提及的替换部分\1\2分别.所以我们在一封信之后立即查找一个数字,然后将其替换为字母,然后是逗号,然后是空格,然后是数字.

您还可以使用帖子中提到的POSIX字符类:

sed 's/\([[:alpha:]]\)\([[:digit:]]\)/\1, \2/g' testfile
Run Code Online (Sandbox Code Playgroud)