Sed: Difference between revisions
From Jedisaber Wiki
| Line 58: | Line 58: | ||
<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 /> | <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 /> | '''Example:''' <br /> | ||
<code>sed 's/red/blue/g' < file.txt</code> | <code>sed 's/red/blue/g' < file.txt</code><br /> | ||
<code>/I</code> Ignore Case | <code>/I</code> Ignore Case | ||
| Line 65: | Line 65: | ||
<code>/w <i>filename</i></code> Write Filename | <code>/w <i>filename</i></code> Write Filename | ||
== Special Characters == | == Special Characters == | ||
Revision as of 20:48, 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:
sed 's/red/blue/g' < file.txt
/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
