unix - Delete Special Word Using sed -


i use sed remove occurances of line if , if this

<ab></ab> 

if line, not want delete it

<ab>keyword</ab> 

my attempt that's not working:

sed '/<ab></ab>/d' 

thanks insight. i'm not sure what's wrong should not have escape anything?


i'm using shell script named temp execute this. command this:

cat foobar.html | ./temp 

this temp shell script:

#!/bin/sh sed -e '/td/!d' | sed '/<ab></ab>/d' 

it looks have couple of problems here. first / in close-tag. sed uses delimit different parts of command. fortunately, have escape \. try:

sed '/<ab><\/ab>/d' 

here's example on machine:

$ cat test <ab></ab> <ab></ab> <ab>test</ab> $ sed '/<ab><\/ab>/d' test <ab>test</ab> $ 

the other problem i'm not sure purpose of sed -e '/td/!d' is. in it's default operating mode, don't need tell not delete something; tell want delete.

so, on file called input.html:

sed '/<ab><\/ab>/d' input.html 

or, edit file in-place, can do:

sed -i -e '/<ab><\/ab>/d' input.html 

additionally, sed lets use character want delimiter; don't have use /. if you'd prefer not escape input, can do:

sed '\@<ab></ab>@d' input.html 

edit

in comments, mentioned wanting delete lines contain </ab> , nothing else. that, need what's called anchoring match. ^ character represents beginning of line anchoring, , $ represents end of line.

sed '/^<\/ab>$/d' input.html 

this match line contains (literally) </ab> , nothing else @ all, , delete line. if want match lines contain whitespace too, no text other </ab>:

sed '/^[[:blank:]]*<\/ab>[[:blank:]]*$/d' input.html 

[[:blank:]]* matches "0 or more whitespace characters" , called "posix bracket expression".


Comments

Popular posts from this blog

c++ - llvm function pass ReplaceInstWithInst malloc -

Cross-Compiling Linux Kernel for Raspberry Pi - ${CCPREFIX}gcc -v does not work -

java.lang.NoClassDefFoundError When Creating New Android Project -