Misplaced Pages

Sed: Difference between revisions

Article snapshot taken from[REDACTED] with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.
Browse history interactively← Previous editNext edit →Content deleted Content addedVisualWikitext
Revision as of 09:07, 24 April 2003 edit217.24.129.50 (talk) Link fix← Previous edit Revision as of 10:46, 13 May 2003 edit undoGregUbben (talk | contribs)20 edits Rewrote/added a few sentences; added 2nd & 3rd paragraphs; more edits to come...Next edit →
Line 1: Line 1:
]]] ]]]
'''Sed''' (which stands for '''S'''tream '''ED'''itor) is a program used to modify text files. It reads input files line by line, transforms these lines according to rules specified in a certain simple language, and outputs them. The rules often involve ]s. While originally a ] utility (written by Lee E. McMahon of ]), it is now available for virtually any operating system which supports a ]. '''Sed''' (which stands for '''S'''tream '''ED'''itor) is a simple but powerful computer program used to apply various pre-specified textual transformations to a sequential stream of text data. It reads input files line by line, edits each line according to rules specified in its simple language (the ''sed script''), and then outputs the line. While originally created as a ] utility by Lee E. McMahon of ] in ]/], sed is now available for virtually every operating system that supports a ].

Sed is often thought of as a non-interactive ].
It differs from conventional text editors in that the processing of the two inputs is inverted.
Instead of iterating once through a list of commands applying each one to the whole text file in memory, sed iterates once through the text file applying the whole list of commands to each line.
Since only a line at a time is in memory, sed can process arbitrarily-large text files.

Sed's command set is modeled after the ] editor, and most commands work similarly in this inverted paradigm. For example, the command '''25d''' means ''if this is line 25, then delete (don't output) it'', rather than ''go to line 25 and delete it'' as it does in ed. The notable exception is the copy and move commands, which span a range of lines and thus don't have straight-forward equivalents in sed. Instead, sed introduces an extra
buffer called the ''hold'' space, and additional commands to manipulate it.
The ed command to copy line 25 to line 76 ('''25t76''') for example would be coded as two separate commands in sed ('''25h; 76g'''), to store the line in the hold space until the point at which it should be retrieved.


The following example shows a typical usage of sed: The following example shows a typical usage of sed:
Line 25: Line 34:
* Matches all the characters inside the * Matches all the characters inside the


Sed is one of the very early unix commands that permitted command line processing of data files. Cousin to the later ], sed allowed powerful and interesting data processing to be done by shell scripts. Sed was probably the earliest Unix tool that really encouraged regular expressions to be used ubiquitously. Sed is one of the very early Unix commands that permitted command line processing of data files. It evolved as the natural successor to the popular ] command. Cousin to the later ], sed allowed powerful and interesting data processing to be done by shell scripts. Sed was probably the earliest Unix tool that really encouraged regular expressions to be used ubiquitously.


Sed and AWK are often cited as the progenitors and inspiration for ]; in particular the s/// syntax from the example above is part of Perl's syntax. Sed and AWK are often cited as the progenitors and inspiration for ]; in particular the s/// syntax from the example above is part of Perl's syntax.

Revision as of 10:46, 13 May 2003

Sed (which stands for Stream EDitor) is a simple but powerful computer program used to apply various pre-specified textual transformations to a sequential stream of text data. It reads input files line by line, edits each line according to rules specified in its simple language (the sed script), and then outputs the line. While originally created as a UNIX utility by Lee E. McMahon of Bell Labs in 1973/1974, sed is now available for virtually every operating system that supports a command line.

Sed is often thought of as a non-interactive text editor. It differs from conventional text editors in that the processing of the two inputs is inverted. Instead of iterating once through a list of commands applying each one to the whole text file in memory, sed iterates once through the text file applying the whole list of commands to each line. Since only a line at a time is in memory, sed can process arbitrarily-large text files.

Sed's command set is modeled after the ed editor, and most commands work similarly in this inverted paradigm. For example, the command 25d means if this is line 25, then delete (don't output) it, rather than go to line 25 and delete it as it does in ed. The notable exception is the copy and move commands, which span a range of lines and thus don't have straight-forward equivalents in sed. Instead, sed introduces an extra buffer called the hold space, and additional commands to manipulate it. The ed command to copy line 25 to line 76 (25t76) for example would be coded as two separate commands in sed (25h; 76g), to store the line in the hold space until the point at which it should be retrieved.

The following example shows a typical usage of sed:

sed -e 's/OldExpression/NewExpression/g' inputFileName > outputFileName

The s stands for substitute, the g stands for global. That means in the whole line. After the first slash there is the expression to search for and after the second slash there is the expression to substitute instead. The first expression can be a regular expression.

Under Unix this can be combined with a pipe

generate_data | sed -e 's/x/y/'

That is, generate the data, but make the small change of replacing x by y.

Several substitutions or other commands can be put together in a file called for example subst.sed and then be applied like

sed -f subst.sed inputFileName > outputFileName

Besides substitution other forms of simple processing are possible. For example the following script deletes empty lines or lines which only contain spaces:

sed -e '/^ *$/d' inputFileName 

This example used some of the following metacharacters:

  • ^ Matches the beginning of the line
  • $ Matches the end of the line
  • . Matches any single character
  • * Will match zero or more occurrences of the previous character
  • Matches all the characters inside the

Sed is one of the very early Unix commands that permitted command line processing of data files. It evolved as the natural successor to the popular grep command. Cousin to the later AWK, sed allowed powerful and interesting data processing to be done by shell scripts. Sed was probably the earliest Unix tool that really encouraged regular expressions to be used ubiquitously.

Sed and AWK are often cited as the progenitors and inspiration for Perl; in particular the s/// syntax from the example above is part of Perl's syntax.

Sed's language does not have variables and only primitive GOTO and branching functionality; nevertheless, the language is Turing complete.

External links:


In Egyptian mythology, Sed was a god of redemption.

Alternative: Sedim

Sed: Difference between revisions Add topic