Еще одна причина, по которой вам необходимо редактировать эти файлы, заключается в том, что вы редактируете файлы в образе файловой системы, который вы будете загружать в другой системе, и вам нужно отладить эту систему после загрузки. Например, эфемерная файловая система MAAS, используемая при неудачном вводе в эксплуатацию или в режиме восстановления.
Никогда не говори никогда... если ты этого не хочешь.
sed 'expression;expression'
совпадает с
sed -e 'expression' -e 'expression'
, что в некоторых простых случаях совпадает с
sed -e 'expression' | sed -e 'expression'
В вашем случае (из того, что я вижу ), вы пытаетесь изменить все &
на <
. Затем все <
в новые строки, а затем, наконец, вы добавляете <
в начало строк:
s/\&/\</g;s/\</\
/g;s/^/\</g
С заданным вводом этот sed
скрипт выполнит следующие действия с BSDsed
:
$ sed -f script.sed file
<
<
<
<
Или с GNUsed
:
$ gsed -f script.sed file
<
<
str
<
int
<
int
Почему это?
&
\
перед &
можно дополнительно опустить ), поэтому первое выражение — это no -op. \<
, которое является (началом границы )слова. Честно говоря, я немного озадачен тем, почему текст удаляется BSD sed
(. Я посмотрю, является ли это ошибкой OpenBSD sed
). Так что это вставляет новую строку в начале каждого слова файла примера. <
в начале строки. В отличие от этого, единственное выражение s/^/\</g
(, в котором \
перед <
и модификатор g
не нужны ), будет просто вставлять <
в начале каждого линия.
Следуйте за -вверх :Было подтверждено, что в sed
реализации на OpenBSD 6.1 -была ошибка, связанная с добавлением строки перед строкой, начинающейся со вставленной новой строки. Патч отправлен.