display | more...

The ex s command takes two arguments, the first being the regular expression that is to be replaced, the second being the replacement.

Command: substitute on lines matching an RE
Usage: [line [,line]] s [[/;]RE[/;]repl[/;] [cgr] [count] [#lp]]

Using \{ and & portions of text can be re-inserted in to the replacement string.

Line    : foo is bar
Command : s/foo\(.*\)bar/\1baz/
New line:  is baz

Line    : foo is bar
Command : s/bar/not &/
New line: foo is not bar
To replace globally within a line, the g operator can be used.
Line    : foo is bar is bar
Command : s/bar/baz/g
New line: foo is baz is baz

To replace all occurrences of bar to baz throughout the entire file, one would use:

Command : 1,$ s/bar/baz/g

The "1" signifies the first line of the file, and the $ the last.

There are many more operations available for use with the s command, consult your ex or vi manual for details.

The s command is also used by other editors like sed, and in programming languages like perl.

QED, a line-oriented texteditor, ancestor to the standard editor: ed. QED was first written in 1967, but the first solid reference I could find to the s command was in QED's manual dated 22 June 1970.

QED Manual (D.M. Ritchie and K.L. Thompson)

S) (.,.) S/<regexp>/<string>/ Substitute.

Occurrences of <regexp> in the addressed lines are replaced by <string>. "." is set to the last line in which a substitution took place. The character "&" in the <string> has a value equal to the text matched by the <regexp>. If a construct of the form "{<regexp2>}x" was used in the <regexp>, the character "x" has value equal to the text matched by <regexp2>.

Any character but space or <nl> may be used instead of "/" to bound the <regexp> If any substitutions took place, the condition register is set to true, otherwise to false. It is not an error for a substitution to fail.

The canonical search and replace operator, as used in sed, Perl, and any other tool that makes use of regular expressions.
Any valid regular expression may be sought as pattern. If the s/// operator is followed by g, all occurrences of the pattern are replaced, instead of just the first found; if followed by i, the matching is case-insensitive.

A full discussion of the syntax of s/// is beyond the scope of this writeup, and may be better served by the Perl manual, or the excellent O'Reilly book Mastering Regular Expressions.

The s/// form is often seen in text-based chat environments, where it is used to correct typos in one's previous statements, or humorously in the same manner ^H often is.

Log in or register to write something here or to contact authors.