Sed: Difference between revisions

From Psygen Wiki
Jump to navigation Jump to search
No edit summary
Line 53: Line 53:


<code>y/..../..../</code> Transform
<code>y/..../..../</code> Transform


== sed Pattern Flags ==
== sed Pattern Flags ==
Line 58: Line 59:
<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>/I</code> Ignore Case
<code>/I</code> Ignore Case
Line 65: Line 66:


<code>/w <i>filename</i></code> Write Filename
<code>/w <i>filename</i></code> Write Filename


== Special Characters ==
== Special Characters ==

Revision as of 20:37, 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

  1. sed man page
  2. Grymoire sed tutorial