Я не очень хорошо на регулярных выражений, мне нужно искатьПоиск и замена строки в UNIX-Баш
<
ANYWORD />
и repace с <anyword></anyword>
Как <book/>
к <book></book>
Я не очень хорошо на регулярных выражений, мне нужно искатьПоиск и замена строки в UNIX-Баш
<
ANYWORD />
и repace с <anyword></anyword>
Как <book/>
к <book></book>
Это звучит, как вы пытаетесь разобрать XML с регулярными выражениями, которые, как правило, плохая идея — XML является гораздо более сложным, чем это может показаться вначале (что происходит, когда вам нужно заменить <a b="c"/>
на <a b="c"></a>
? ? Как насчет имен элементов не-ASCII) — но если вы уверены, что вы описали это именно то, что вам нужно, то вы можете написать:
perl -pe 's{<(\w+)/>}{<$1></$1>}g' <input_file> output_file
или:
sed 's|<\([^[:space:]][^[:space:]]*\)/>|<\1></\1>|g' <input_file> output_file
Регулярное выражение чтобы соответствовать вашим тегам:
<(\w+)/>
Используя колпачок ры группы, вы можете создать новые теги, как это:
<\1></\1>
Использование
sed -i 's|<\([[:alpha:]][[:alpha:]]*\)/>|<\1></\1>|g' $input_file
Чтобы изменить файл в строке (это то, что для -i
). Осторожно: -i
является расширением GNU.
Чтобы быть POSIX совместимых и редактировать файл инлайн (в любой системе IX *), используйте:
echo '/<[[:alpha:]][[:alpha:]]*\/>/g\
s/<\([[:alpha:]][[:alpha:]]*\)\/>/<\1><\/\1>/g
wq' | ed $input_file
См стандарт POSIX на sed, ed и regular expressions.
Благодарим вас от версии sed. Я только удалил '[: space:]' check ... также я уверен, что файл, который мне нужно отредактировать, имеет только значение « » или «» ' теги ... –
Marcx