У меня трудно понять, число разбора патч в следующей команде я видел в this article:Как этот командный код команды командует запятыми?
sed -i ':a;s/\B[0-9]\{3\}\>/,&/;ta' numbers.txt
Я sed
новичку, так это то, что я был в состоянии выяснить:
&
добавляет к тому, что уже есть, а не подменяли:a; ... ;ta
вызывает замену рекурсивно на линии, пока поиск не находит больше прибыли
Вот что я надеюсь, люди могут объяснить
- Что
-i
делать? Кажется, я не могу найти его на страницах руководства, хотя я уверен, что он там. - Я немного расплывчатый от того, что делает здесь
\B
? Возможно, это помогает с приоритетом левого правого разбора, но я не вижу, как это сделать. Итак, наконец ... - Самое главное, почему это выполняется справа налево, а не слева направо? Например, какая часть команды держит это делать что-то вроде:
1234566778,9 ---> 1234,566,778,9
Это может быть несколько более понятным: 'sed -i -r ': a; s/([0-9]) ([0-9] {3}) \>/\ 1, \ 2 /; ta'' - найти число, за которым следуют 3 числа, за которыми следует граница слова, и вставить запятую перед группой из трех чисел. –