We have talked about the g flag, with which we can change every string that matches the pattern line by line instead of the first one. Now Let me introduce other flags to you.

examples:

1.echo "This is a test"; echo "Today is a good day." | sed -r 's;([a-zA-Z]+day) is a ([a-zA-Z]+) (day);\1 and yesterday are \2 \3s;g'

2.echo "This is a test"; echo "Today is a good day." | sed -r 's;([a-zA-Z]+day) is a ([a-zA-Z]+) (day);\1 and yesterday are \2 \3s;gp'

3.echo "This is a test"; echo "Today is a good day." | sed -n -r 's;([a-zA-Z]+day) is a ([a-zA-Z]+) (day);\1 and yesterday are \2 \3s;gp'

By default, sed prints every line. If it makes a substitution, the new text is printed instead of the old one.[example 1]

Notice the third example, if you use an optional argument to sed, "sed -n," it will not, by default, print any new lines. [example 3]

 

We can use '>>' or '>' to write the results to a file or some devices. But if you’re not in a shell. This way may not be a good idea. But do not worry. Sed has it’s own way. There’s a flag ---- '/w'.

example:

1. echo "Today is a good day." | sed -r 's/.*good.*/& &/gw doubledSentence'

This command will double any sentence that cantains good and write the results to a file.

 

wFlag

As you can see, we can combine the flags together without any problem. But '/w' has to be the last flag.

posted on 2012-09-28 13:48  Neoh  阅读(466)  评论(0编辑  收藏  举报