Если Вы просто хотите запустить определенный набор программы, например, всего, в чем Вы нуждаетесь для графического редактирования или так, Вы могли просто записать некоторый небольшой сценарий оболочки для запуска их. manageHook
s может затем поместить окна в правильные рабочие области и так далее.
Это обладало бы дополнительным преимуществом, которое Вы могли "восстановить" несколько настроек сразу, например, чат (гибридный язык, irssi), просмотрев (хром).
Единственный недостаток, который я вижу, состоит в том, что необходимо вручную записать "файлы сессии".
Мобильность? Обработка текста? Perl, конечно:
perl -n0777e 's{\n+}{\n}g' your_file
где -0777
дает Perl команду читать целый файл в сразу так, чтобы последовательные новые строки могли быть найдены Perl.
Вышеупомянутое удалило бы все дублирующиеся новые строки. Удалить только тех, которые после [FACT]
, можно сделать:
perl -n0777e 's{\[FACT\]\n+}{\n}g' your_file
Я предполагаю, что "две новых строки" означают \n\n
а не две пустых строки после строки с [FACT]
(который был бы тремя новыми строками). Так или иначе sed будет работать, поскольку он разделяет только первую новую строку после [FACT]
.
$ echo -e '[FACT]\n\nend'
[FACT]
end
Это будет искать строки, заканчивающиеся в [FACT]
и для каждой строки, которая соответствует, мы используем N
добавлять следующую строку в текущее пространство шаблона, сохраняющее новую строку, которую sed обычно разделяет из пространства шаблона.
$ echo -e '[FACT]\n\nend' |sed '/\[FACT\]$/ { N; s/\n// }'
[FACT]
end
Если [FACT]
не должен конкретно быть в конце строки, удалить $
от команды.
Обратите внимание на то, что это технически разделяет новую строку от конца строки, которая содержит [FACT]
таким образом, это технически связывает две строки в одну:
$ echo -e '[FACT]\nhelp\nend'
[FACT]
help
end
$ echo -e '[FACT]\nhelp\nend' |sed '/\[FACT\]$/ { N; s/\n// }'
[FACT]help
end
perl -pi'.orig' -n0777e 's{(.*FACT)\n+}{\1\n}g' /tmp/file
– troydj 31.10.2013, 02:11...{$1\n}g
вместо...{\1\n}g
. Использование Perl\1
как обратная ссылка только на "левой стороне" замены. "Правая сторона" должна содержать нормальные переменные Perl (следовательно$1
).как есть\1
на правой стороне будет ссылка на анонимное скалярное, содержащее1
. – Joseph R. 31.10.2013, 23:11