Форум — General [sed] Заменить каждое n-ное вхождение sed 0 1 Привет. Покажите, пожалуйста, как sed заменить каждое энное вхождение выражения. Спасибо. Ссылка
Ответ на: комментарий от dreamer 02.12.11 20:50:34 MSK sudo cast awk anonymous (02.12.11 20:59:06 MSK) Показать ответ Ссылка
sed 's/pattern/substitution/n'n - номер вхождения.Пример:$ echo "abcabcabc" | sed -e 's/a/z/3' abcabczbc $ OldFatMan ☆ (02.12.11 21:00:59 MSK) Показать ответ Ссылка
Ответ на: комментарий от anonymous 02.12.11 20:59:06 MSK http://27.media.tumblr.com/tumblr_lohwy1QBWU1qg8vz1o1_500.png dreamer ★★★★★ (02.12.11 21:01:55 MSK) Ссылка
Ответ на: комментарий от OldFatMan 02.12.11 21:00:59 MSK Это третье - но не каждое третье. Frakhtan-teh ★★ (02.12.11 22:07:48 MSK) автор топика Показать ответ Ссылка
Ответ на: комментарий от Frakhtan-teh 02.12.11 22:07:48 MSK А, ну да - сорри, ступил. OldFatMan ☆ (02.12.11 22:09:50 MSK) Ссылка
В общем, сделал при помощи си, седа и такой-то матери:while((c = getchar()) != EOF) { if (c == '\n') { j++; if (i == 2) { c=' '; i=0; } } putchar(c); } А потом убираем невесть откуда взявшиеся \r\n переводы строк возникшие на месте всех остальных после того как прошлись по файлику этой какой:sed -e 's/^M//g' log.txtУра. Frakhtan-teh ★★ (02.12.11 22:11:10 MSK) автор топика Показать ответы Ссылка
Ответ на: комментарий от Frakhtan-teh 02.12.11 22:11:10 MSK так тебе надо строки объединить, каждую третью со следующей?awk '{if (NR%3) {print} else {getline n; print $0n}}' sdio ★★★★★ (02.12.11 22:18:42 MSK) Показать ответ Ссылка
Ответ на: комментарий от sdio 02.12.11 22:18:42 MSK Что-то вроде того.Спасибо. Добавил рецепт себе в томбой. Frakhtan-teh ★★ (02.12.11 22:38:20 MSK) автор топика Показать ответ Ссылка
Ответ на: комментарий от Frakhtan-teh 02.12.11 22:11:10 MSK Так я ещё и задачу неправильно понял... :( OldFatMan ☆ (02.12.11 22:51:58 MSK) Ссылка
Ответ на: комментарий от Frakhtan-teh 02.12.11 22:38:20 MSK Что-то вроде того.Конкретно этот случай можно и так: sed '3~3 {N;s/\n//}'А в общем случае можно костыльнуть 2 sed: первым разбить по регэкспу \0 - символом, вторым заменять (вместе с \0) каждую n-ю строку: n~n. n01r ★★ (02.12.11 23:11:58 MSK) Показать ответ Ссылка
Ответ на: комментарий от n01r 02.12.11 23:11:58 MSK //fix: не \0, а просто \n (и перед заменой: N, дабы \n убрать с регэкспом). n01r ★★ (02.12.11 23:23:58 MSK) Ссылка