Sed: Difference between revisions
No edit summary |
No edit summary |
||
Line 72: | Line 72: | ||
What if you don't know the output of the search string? You can use the special character <code>&</code>, it represents the pattern that sed found. | What if you don't know the output of the search string? You can use the special character <code>&</code>, it represents the pattern that sed found. | ||
<code>sed 's/[a-z]*/(&)/' <old.txt >new.txt <code> | <code>sed 's/[a-z]*/(&)/' <old.txt >new.txt </code> | ||
Revision as of 20:31, 10 January 2017
Sed is a stream editor. A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline). Sed is similar editors that script edits, but sed only makes one pass over the input(s), and thus is more efficient. But it is sed's ability to filter text in a pipeline which particularly distinguishes it from other types of editors.
Commands
: label
# comment
{....} Block
=
print line number
a \
Append
b label Branch
c \
change
d
and D
Delete
g
and G
Get
h
and H
Hold
i \
Insert
l
Look
n
and N
Next
p
and P
Print
q
Quit
r filename
Read File
Substitution:
s/..../..../
Substitute. Changes the 1st pattern to the second pattern.
Example:
sed 's/red/blue/' < file.txt
Changes "red" to "blue" in file.txt
cat file.txt | sed 's/one/two/'
Changes "one" to "two" in file.txt
The search pattern is on the left, and the replacement string is on the right. By default, sed replaces the first occurrence per line.
t label
Test
w filename Write Filename
x eXchange
y/..../..../
Transform
sed Pattern Flags
/g
Global
/I
Ignore Case
/p
Print
/w filename
Write Filename
Special Characters
&
Corresponds to the pattern found.
& is used when searching for a pattern and then adding some characters (such as parenthesis> around or near the pattern sed found. It's easy if you're searchin for a particular string:
sed 's/abc/(abc)/' <old.txt >new.txt
- Replaces abc with (abc)
What if you don't know the output of the search string? You can use the special character &
, it represents the pattern that sed found.
sed 's/[a-z]*/(&)/' <old.txt >new.txt
Command Line Options
-r
Enable sed to use Regular Expressions
References