1

Я хочу вставить точки в виде разделителей тысяч в числа, используя sed . Как я могу это сделать?

Пример ввода / вывода: 29371923471239 должен стать 29.371.923.471.239 .

3 ответа3

2

Попробуй это

echo "29371923471239" | sed -r ':A;s|([0-9]+)([0-9]{3})|\1,\2|g;t A'
29,371,923,471,239

Это работает, разбивая число на две части, последние 3 цифры и все остальное. Затем он добавляет a , в конец всего остального и возвращается к началу. Вы можете видеть это работает с

echo "29371923471239" | sed -r ':A;s|([0-9]+)([0-9]{3})|\1,\2|g'
29371923471,239
2

ИСПОЛЬЗУЙТЕ GHC-ONELINERS ДЛЯ БОЛЬШОГО ХОРОШЕГО

$> echo -n 29371923471239 | ghc -e "import Data.List.Split" -e "putStrLn . reverse . intercalate \".\" . splitEvery 3 . reverse =<< getContents"
29.371.923.471.239

!

1

От:http://www.linuxtopia.org/online_books/linux_tool_guides/the_sed_faq/sedfaq4_007.html

sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta'

echo "981273981723" | sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta' 981,273,981,723

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .