pioavi
1
Hello, I'm looking for sed solution to change
...
<li>keyword</li>
<li>keyword
<li>keyword</li>
<li>keyword
<li>keyword</li>
...
to
...
<li>keyword</li>
<li>keyword</li>
<li>keyword</li>
<li>keyword</li>
<li>keyword</li>
...
I.e., if lines beginning with <li> do not end with </li>, append </li> to the end.
Does it have to be sed?
awk '/^<li>/&&!/<\/li>$/{$0=$0"</li>"}1' file
1 Like
Here you go..
[mkt@michael]$ sed '/^<li>/{
> />$/!s/$/<\/li>/
> }' inputfile
...
<li>keyword</li>
<li>keyword</li>
<li>keyword</li>
<li>keyword</li>
<li>keyword</li>
...
[mkt@michael]$
Note - highlighted > indicates line breaks in my Solaris machine.
1 Like
Hi,
If you need your code to be more generic, Try this one,
Input:
<li>keyword</li>
<a>keyword
<B>keyword</B>
<li>keyword
<li>keyword</li>
sed '/>$/! s/<\(.*\)>\(.*\)/<\1>\2<\/\1>/' file
Output:
<li>keyword</li>
<a>keyword</a>
<B>keyword</B>
<li>keyword</li>
<li>keyword</li>
Cheers,
Ranga:)
1 Like