User Tools

Site Tools


en:notes

Pour remplacer des trucs de Wiki.js

sed -i.bak2 's/<!-- TITLE: \([^>]*\) -->/====== \1 ======/g' cube.txt
sed -i.bak2 's/<!-- SUBTITLE: \([^>]*\) -->/===== \1 =====/g' cube.txt

Suite à la conversation :

<tierce> hello how to search for <!-- TITLE: and replace with ====== using sed ?
<Riviera> # echo '<!-- TITLE:<!-- TITLE:<!-- TITLE:' | sed 's/<!-- TITLE:/======/g'
<shbot> Riviera: ==================
<tierce> thank you !
<tierce> is it possible to replace ====== some title ====== by ====== some title ====== using sed ?
<Riviera> That would be
<Riviera> <!-- TITLE: ... until the end of the line?
<tierce> and keep the « some title » text ?
<Riviera> What if there are other tags on the same line, or what if the title spans multiple lines?
<Riviera> sed is likely not the best tool to process your data
<Riviera> Anyway, if it is to the end of the line:
<tierce> the title does not span on multiple line
<Riviera> # echo '<!-- TITLE: some title' | sed 's/<!-- TITLE:/======/;s/$/ ======/'
<shbot> Riviera: ====== some title ======
<Riviera> ah
<Riviera> i missed the -->, sorry.
<Riviera> So that's a bit complicated in sed, let me think.
<tierce> if another tool is necessary, what would you recommand ?
<Riviera> Since your data is XML I'd recommend something that understands XML. Perhaps xmlstarlet or xmllint.
<tierce> ok.. it helps me for the moment, and if it's not enough, I'll have a look on xmlstartel or xmlint.
<tierce> thanks for your help
<Riviera> well hm, since you are not looking for a robust solution anyway,
<Riviera> perhaps this would suffice for your current situation:
<Riviera> # echo '<!-- something -->====== some title ======<!-- something -->' | sed 's/<!-- TITLE: \([^>]*\) -->/====== \1 ======/g'
<shbot> Riviera: <!-- something -->====== some title ======<!-- something -->
<Riviera> sed 's/<!-- TITLE: \([^>]*\) -->/====== \1 ======/g'
en/notes.txt · Last modified: 2019/10/13 15:01 (external edit)