меняю только часть подстроки, используя sed

Это отправляет сигнал SIGKILL (9) всем процессам. Процесс не может перехватить этот сигнал и немедленно завершается. Это означает, что ни один процесс не может очиститься после себя, и даже критически важные системные процессы будут убиты без предварительного уведомления.

Это единственный процесс kill -9 pid эквивалент очень сильно не рекомендуется именно по указанной выше причине, killall намного опаснее.

Всегда помните, что Unix / Linux делает именно так, как сказано, даже если команда является деструктивной. Вы, системный администратор, полностью контролируете . С огромной силой приходит большая ответственность.

3
27.09.2018, 21:58
4 ответа
cat file.txt | sed -r 's/([0-9]+)/\1,/g'

{02,   12,     04, 01, 07, 10, 11, 06, 08, 05, 03,    15,     13,     00,    14,     09,},
{14,   11,     02, 12, 04, 07, 13, 01, 05, 00, 15,    10,     03,     09,    08,     06,},
{04,   02,     01, 11, 10, 13, 07, 08, 15, 09, 12,    05,     06,     03,    00,     14,},
{11,   08,     12, 07, 01, 14, 02, 13, 06, 15, 00,    09,     10,     04,    05,     03,}

Пояснение:

First capturing group ([0-9]+)

Match a single character (i.e. number) present in the table [0-9]+ 
+ Quantifier — Matches between one and unlimited times, as many times as possible, giving back as needed (greedy)
0-9 a single character in the range between 0 (index 48) and 9 (index 57) (case sensitive)

In other words, the [0-9]+ pattern matches an integer number (without decimals) even Inside longer strings, even words.
\1 is called a "back reference" or "special escapes" in the sed documentation. It refers to the corresponding matching sub-expressions in the regexp. In other words, in this example, it inserts the contents of each captured number in the table followed by comma.
6
27.01.2020, 21:09

Вы можете просто заменить пробел, за которым следует любое количество пробелов, запятой:

sed 's/  */,/g' file

(если пробелы в начале некоторых строк являются просто ошибкой копирования и вставки)

2
27.01.2020, 21:09

Эта команда perl добавит запятую между цифрой и пробелом

perl -pe 's/(?<=\d)(?=\s)/,/g' file
1
27.01.2020, 21:09

Как насчет

sed 's/ \+/, /g' file
{02, 12, 04, 01, 07, 10, 11, 06, 08, 05, 03, 15, 13, 00, 14, 09},
{14, 11, 02, 12, 04, 07, 13, 01, 05, 00, 15, 10, 03, 09, 08, 06},
{04, 02, 01, 11, 10, 13, 07, 08, 15, 09, 12, 05, 06, 03, 00, 14},
{11, 08, 12, 07, 01, 14, 02, 13, 06, 15, 00, 09, 10, 04, 05, 03}
2
27.01.2020, 21:09

Теги

Похожие вопросы