sed: удалите все случаи строки кроме первой

Можно перезапустить gnome-shell путем нажатия Alt+F2 и затем ввода или в "перезапуске" или в просто "r" и нажатия Enter.

Иначе я заметил, что это автоматически обновляется .desktop файлы после ожидания некоторое время.

14
08.08.2011, 14:05
4 ответа

С GNU SED :

sed 's/pattern//2g'

2 Указывает, что второй шаблон и все остальные G должны удалить. Так что это будет держать первый.

4
27.01.2020, 19:51

Это должно работать (замена _ чем-то еще должна он сталкиваться с Вашими журналами):

sed -e 's/pattern/_&/1' -e 's/\([^_]\)pattern//g' -e 's/_\(pattern\)/\1/'
7
27.01.2020, 19:51
  • 1
    , если Вы когда-либо желаете уникальный разделитель, использует \n. объяснение –  mikeserv 19.12.2014, 15:35
sed -e ':begin;s/pattern//2;t begin'

или без sed goto:

sed -e 's/\(pattern\)/\1\n/;h;s/.*\n//;s/pattern//g;H;g;s/\n.*\n//'

Универсальные решения удалить из энного (3, например) положение:

sed -e ':begin;s/pattern//4;t begin'
sed -e 's/\(pattern\)/\1\n/;h;s/.*\n//3;s/pattern//g;H;g;s/\n.*\n//'
5
27.01.2020, 19:51

Небольшое изменение на ответе @ JillaGre (модифицировано для надежности) может выглядеть как:

sed 's/p\(attern\)/p\n\1/;s///g;s/\n//'

... но в некоторых SED Вам может потребоваться заменить n в правой части первой // / Заявление об убьютивании с литералом \ N Характер EWLINE.

1
27.01.2020, 19:51

Теги

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