См. ответ @manatwork для истинной причины для 1h;1!H
, но я хотел добавить примечание мобильности.
Стандартный и портативный синтаксис должен быть:
sed -n '1h; 1!H; ${ g; s/foo\nbar/bla\
blub/p;}'
Иначе это не будет работать в большинстве sed
реализации, например, традиционные Unix.
Это \n
понят на левой стороне s
команда, но необходимо использовать символ обратной косой черты, сопровождаемый фактическим символом новой строки на правой стороне. Вам также нужно ;
между s
команда и }
, и никакое пространство перед p
.
Вы могли также сохранить содержание файла в пространстве шаблона вместо пространства хранения:
sed -n '
:1
$!{
N;b1
}
s/foo\nbar/blah\
blup/p'
Но и с шаблоном и содержат пространство, с большинством sed
реализации, которые будут только работать с маленькими файлами как большинство реализаций не-GNU, имеют ограниченный размер для тех (и POSIX только требует, чтобы они смогли содержать 8 кибибитов данных).
Портативно, Вы были бы более обеспеченным использованием perl
:
perl -0777 -ne 'print if s/foo\nbar/blah\nblup/'
Поскольку размер не ограничен в perl
или GNU sed
однако остерегайтесь этого, это может иметь падение на производительности системы, поскольку это может закончить тем, что использовало всю системную память, если у Вас нет административно установленных пределов для использования памяти для каждого процесса.
Приложение KDE KRuler
должно соответствовать счету.
Для запуска KRuler
выберите Графика -> KDE Screen Ruler
из меню K.
Кнопки вращения позволяют менять его ориентацию с шагом в 90 градусов, или Вы можете нажать среднюю кнопку мыши (если она у Вас есть), чтобы изменить его на вертикальную линейку.