Sed: Difference between revisions
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
- The SED Homepage on SourceForge
- The SED FAQ
- The SED man page
- Sed, a stream editor
- The sed one-liners
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
}