Sed: Difference between revisions
From Hackepedia
Jump to navigationJump to search
mNo edit summary |
mNo edit summary |
||
Line 31: | Line 31: | ||
francisco$ sed -n 1p /etc/passwd | francisco$ sed -n 1p /etc/passwd | ||
root:*:0:0:Charlie &:/root:/bin/ksh | root:*:0:0:Charlie &:/root:/bin/ksh | ||
== sed delimiters == | |||
pretend you see this: | |||
sed -e 's=rat=/raven/=g' file | |||
it looks difficult because you may know know that sed can use any delimiter between a substitute. | |||
In the example given every instance of rat is changed to /raven/ with the slashes. Here is | |||
another one | |||
sed -e s,/bin,/newbin,g file | |||
Here the delimiter is a comma (,) and / is part of the substitute text. This is totally ok. |
Revision as of 06:25, 2 July 2008
Introduction
Sed stands for stream editor and it does just that, it edits a stream. There is many uses for it for example in the well known substitution mode.
sed and substitution
Using the s allows the results to be substituted like so:
echo one two three four five six seven eight nine | sed -e 's/one/bleep/g' -e 's/five/bleep/g'
would result in:
bleep two three four bleep six seven eight nine
sed and deleting
If I wanted to delete lines 1 through 46 the syntax would be so:
francisco$ sed -e '1,46d' /etc/passwd _postfix:*:507:507:Postfix Daemon:/var/empty:/sbin/nologin testuser:*:1001:1001:test:/usr/home/testuser:/bin/ksh
You see the last two entries of a 48 line file.
sed and printing certain rows
Pretend you need to work on the first entry in the /etc/passwd file:
francisco$ sed -n 1p /etc/passwd root:*:0:0:Charlie &:/root:/bin/ksh
sed delimiters
pretend you see this:
sed -e 's=rat=/raven/=g' file
it looks difficult because you may know know that sed can use any delimiter between a substitute.
In the example given every instance of rat is changed to /raven/ with the slashes. Here is another one
sed -e s,/bin,/newbin,g file
Here the delimiter is a comma (,) and / is part of the substitute text. This is totally ok.