我是编程的初学者,并且有关于正则表达式匹配的快速问题,并且想知道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)
任何帮助表示赞赏.为这个简单的问题道歉!谢谢!
试试这个:
$ 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)