Sed: Difference between revisions
No edit summary |
|||
Line 56: | Line 56: | ||
== sed Pattern Flags == | == sed Pattern Flags == | ||
<code>/g</code> Global | <code>/g</code> Global. By default, sed only matches/replaces the first occurrence of a pattern for each line. The /g makes it replace all occurrences.<br /> | ||
'''Example:''' <br /> | |||
<code>/I</code> Ignore Case | <code>/I</code> Ignore Case | ||
<code>/p</code> Print | <code>/p</code> Print | ||
<code>/w <i>filename</i></code> Write Filename | <code>/w <i>filename</i></code> Write Filename | ||
== Special Characters == | == Special Characters == |
Revision as of 20:36, 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. By default, sed only matches/replaces the first occurrence of a pattern for each line. The /g makes it replace all occurrences.
Example:
/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