Как мне заменить это безумие?

Как мне заменить это безумие?

Как я могу заменить экземпляр

id="ogwb"

с

id="ogwb" name="ogwb" value="<?php echo htmlspecialchars($_POST['ogwb']); ?>"

с использованием sedили альтернативой?

решение1

Правильная команда:

sed -E 's/^id="([^"]+)"$/& name="\1" value="<?php echo htmlspecialchars($_POST['"'\1'"']); ?>"/'

Обратите внимание, что это переключает двойные кавычки на одинарные, когда необходимо встроить одинарные кавычки. В Bash нельзя встроить одинарные кавычки внутрь одинарных кавычек. Точка.

Но это не имеет значения, потому что кавычки не являются строкой.терминаторыВ Bash они просто разделители между разными стилями цитирования. Итак:

some-command 'This is in a single quoted string'"'"'This is another quoted string, but is part of the same argument to some-command'
                                                ^^^
                             This single quote is inside of double quotes.

Если вы не хотите беспокоиться о том, как кавычки оболочки взаимодействуют с sed, поместите свою sedкоманду в файл и вызывайте ее с помощью sed -f.

решение2

echo 'id="ogwb"' | sed 's,id=\(.*\),id=\1 name=\1 value="<?php echo htmlspecialchars($_POST[\1]); ?>",'

Связанный контент