使用sed对数字进行分组:下划线不';对我不起作用
我试着把数字分组;只有在使用下划线字符时才会出现问题:使用sed对数字进行分组:下划线不';对我不起作用,sed,number-formatting,Sed,Number Formatting,我试着把数字分组;只有在使用下划线字符时才会出现问题: $ echo "12345678912345678901234567890" | sed ':a;s/\B[0-9]\{3\}\($\|_\)/_&/;ta' 当使用其他字符时,工作完成: $ echo "12345678912345678901234567890" | sed ':a;s/\B[0-9]\{3\}\($\|-\)/-&/;ta' 此外: ……等等。我尝试过替换下划
$ echo "12345678912345678901234567890" | sed ':a;s/\B[0-9]\{3\}\($\|_\)/_&/;ta'
当使用其他字符时,工作完成:
$ echo "12345678912345678901234567890" | sed ':a;s/\B[0-9]\{3\}\($\|-\)/-&/;ta'
此外:
……等等。我尝试过替换下划线,但它的效果相同。这可能适合您(GNU-sed):
使用GRADE(
*
)调用回溯,然后查找4个连续数字,并在第一个和第二个数字之间插入下划线,重复。请添加预期输出\B
是\B
的否定版本,单词边界<代码>单词包括字母数字字符和下划线字符。因此,\B
匹配数字之间的间距以及数字和下划线之间的间距。我知道\B的含义,但似乎没有注意到它引起的问题。。。这是一个无限循环,不是吗?与其应用ta
命令,不如复制替换并观察结果。注意:goto
可能是无限的,永远不会返回。GNU-sed中的--debug
选项也可能会启发管道到less<代码>sed'…'文件--调试|更少
$ echo "12345678912345678901234567890" | sed ':a;s/\B[0-9]\{3\}\($\|:\)/:&/;ta'
sed -E ':a;s/(.*[0-9])([0-9]{3})/\1_\2/;ta' file