sed 's/[long1][long2]/[long3][long4]/' file.txt
Я хотел бы разбить эту команду на несколько строк - например, что-то вроде этого:
sed 's/
[long1]
[long2]
/
[long3]
[long4]
/' file.txt
Использование \
или разделение строк не работает.
/x
модификатор для подстановки.Ответы:
Вы можете сохранить длинную строку в переменных bash, а затем использовать в
sed
команде:Если вы можете использовать
perl
, вы можете сломать длинный шаблон сx
модификатором:источник
sed "s/$string/$replace/" file.txt
Это хорошо.replace=
.Разделение на несколько строк с помощью обратной косой черты работает, если новые строки не имеют отступов.
Протестировано на Cygwin с GNU sed 4.2.2
источник
GNU sed version 4.2.1
и это не работает.Еще один аспект:
Насколько ремонтопригодны
[long]
пункты выше?Чем короче и четче вы можете хранить предложения, тем легче будет их изменить и усовершенствовать с течением времени и изменением (внешне) фактов вокруг выполняемой ими функции.
например
... может быть что-то стремиться и предпочитать.
источник
Вы также можете разбить это следующим образом:
Или, может быть, как:
Или с наследственностью:
источник