Sed: Difference between revisions

From miki
Jump to navigation Jump to search
Line 8: Line 8:
== Installation ==
== Installation ==
It is recommended to add the following alias in your <tt>~/.bashrc</tt>:
It is recommended to add the following alias in your <tt>~/.bashrc</tt>:
<source lang="bash">
{{lp2|<source lang="bash" enclose="prevalid">
alias sed="sed -r"
alias sed="sed -r"
</source>
</source>}}
Of course, this alias has no effect on shell script. There you'll have to specify the option explicitly at each invokation.
Of course, this alias has no effect on shell script. There you'll have to specify the option explicitly at each invokation.



Revision as of 08:30, 26 January 2010

References

Installation

It is recommended to add the following alias in your ~/.bashrc:

alias sed="sed -r"

Of course, this alias has no effect on shell script. There you'll have to specify the option explicitly at each invokation.

Usage

Some basic usage:

sed [OPTION]... {script-only-if-no-other-script} [input-file]...
sed -n                              # Silent - suppress automatic printing of pattern space
sed -r                              # Use extended regular expression
sed -i "s/foo/bar/" *.txt           # In-place file modification

Use of address commands a\text, i\text, c\text. The command is terminated by a *newline*. To insert a newline character, use \n:

$ cat mytext
First line
Second line
$ cat mysedscript
1 {i\inserted text
s/$/ (not anymore)/g}
$ sed -f mysedscript mytext
inserted text
First line (not anymore)
Second line

# All on one line: use echo -e to generate the newline that terminates the command i\
$ echo -e "1 {i\\inserted text\ns/$/ (not anymore)/g}"| sed -f - mytext
inserted text
First line (not anymore)
Second line

#Same result without command \i:
$ sed "1 {s/^/inserted text\n/; s/$/ (not anymore)/}" mytext

Regular expressions

See Regular Expressions.

Script Examples

Remove <script>...</script> HTML tag

s!<script[>\x20\t].*</script>!!g
/<script[>\x20\t]/{
    s!<script[>\x20\t].*!!g
    :NEXTCYCLE
    n
    /<\/script>/!{
        s!.*!!g
        b NEXTCYCLE
    }
    s!.*</script>!!g
}