Jeśli patrzysz na DUŻE liczby, nie byłem w stanie sprawić, by powyższe rozwiązania działały. Na przykład, uzyskajmy naprawdę dużą liczbę:
$ echo 2^512 |bc -l|tr -d -c [0-9]
13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096
Uwaga: Potrzebuję tr
usunąć wyjście nowego wiersza odwrotnego ukośnika z bc. Ta liczba jest zbyt duża, aby traktować ją jako liczbę zmiennoprzecinkową lub stałą liczbę bitów w awk, i nawet nie chcę budować wyrażenia regularnego wystarczająco dużego, aby uwzględnić wszystkie cyfry w sed. Mogę raczej odwrócić i umieścić przecinki między grupami po trzy cyfry, a następnie cofnąć:
echo 2^512 |bc -l|tr -d -c [0-9] |rev |sed -e 's/\([0-9][0-9][0-9]\)/\1,/g' |rev
13,407,807,929,942,597,099,574,024,998,205,846,127,479,365,820,592,393,377,723,561,443,721,764,030,073,546,976,801,874,298,166,903,427,690,031,858,186,486,050,853,753,882,811,946,569,946,433,649,006,084,096
echo 123456789 | awk '$0=gensub(/(...)/,"\\1,","g")'