如何在bash中插入千位分隔符?

如何在bash中插入千位分隔符?,bash,Bash,我有一个文本,其中随机包含一些数字,我想找到它们,并分开数千 输入 Some random text 123456 and other text 987654 etc. 输出 Some random text 123 456 and other text 987 654 etc. 任何帮助都将不胜感激。该任务有一些特殊情况。我第一次尝试只使用这个递归的GNU-sed命令: sed -r ':a;s/([0-9])([0-9]{3}([^0-9]|$))/\1 \2/;ta' 演示: 该任务

我有一个文本,其中随机包含一些数字,我想找到它们,并分开数千

输入

Some random text 123456 and other text 987654 etc.
输出

Some random text 123 456 and other text 987 654 etc.

任何帮助都将不胜感激。

该任务有一些特殊情况。我第一次尝试只使用这个递归的
GNU-sed
命令:

sed -r ':a;s/([0-9])([0-9]{3}([^0-9]|$))/\1 \2/;ta'
演示:


该任务有一些特殊情况。我第一次尝试只使用这个递归的
GNU-sed
命令:

sed -r ':a;s/([0-9])([0-9]{3}([^0-9]|$))/\1 \2/;ta'
演示:


perl解决方案行得通吗?您有十进制数吗?perl解决方案可能会重复吗?您有十进制数吗?可能会重复做得很好;以下内容同时适用于GNU和BSD(OSX)Sed:
Sed-E-E:a'-E/([[:digit:]])([[:digit:]{3}([^[:digit:]|$)/\1\2/;ta'
兼容POSIX的解决方案是可能的,但很麻烦,因为POSIX Sed只支持BRE(基本正则表达式),而POSIX BRE不支持交替(
);本质上,您必须通过复制正则表达式并改变结尾来处理这种变化:
sed-e':a'-e的/\([[:digit:]\)\([[:digit:]\{3\\\\([^[:digit:]\)/\1\2/;ta'-e的/\([:数字:]\)\([[:数字:]\{3\}$\)/\1\2/;ta'
做得很好;以下内容同时适用于GNU和BSD(OSX)Sed:
Sed-E-E:a'-E/([[:digit:]])([[:digit:]{3}([^[:digit:]|$)/\1\2/;ta'
兼容POSIX的解决方案是可能的,但很麻烦,因为POSIX Sed只支持BRE(基本正则表达式),而POSIX BRE不支持交替(
);本质上,您必须通过复制正则表达式并改变结尾来处理这种变化:
sed-e':a'-e的/\([[:digit:]\)\([[:digit:]\{3\\\\([^[:digit:]\)/\1\2/;ta'-e的/\([:数字:]\)\([[:数字:]\{3\}$\)/\1\2/;ta'