Gnu sed

From wikinotes
Revision as of 13:42, 16 October 2021 by Will (talk | contribs) (→‎Overview)

Gnu sed performs search/replace within stdin or files.
See also bsd sed.

Overview

sed lets you manipulate text streams using commands.
example commands:

  • s command search/replaces text (by default on each line)(ex: echo 'foo_bar_baz' | sed 's/^foo/FOO/')
  • i and a prepend/append lines to the stream (ex: echo 'foo_bar_baz' | sed 'i \above stream')

Usage

# Replace 'aaa' with 'bbb'
cat echo "aaa_stuff_aaa" \
    | sed 's_aaa_bbb_g'


# Regex
cat echo "aaa_stuff_aaa" \
    | sed -E 's_[a]*_b_g'

# Group matching (\2 is a variable that refers to the
# second match group. In this case, 'stuff'
cat echo "aaa_stuff_aaa" \
    | sed -E 's_\([a]*\)\(stuff\)_\2\n'


# Replace file contents
sed -i"bak"  "s_aaa_bbb_g" /path/to/file