File: string-replace.rst

package info (click to toggle)
fish 4.2.1-3.2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 35,976 kB
  • sloc: python: 6,972; javascript: 1,407; sh: 1,009; xml: 411; ansic: 230; objc: 78; makefile: 20
file content (70 lines) | stat: -rw-r--r-- 2,367 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
string-replace - replace substrings
===================================

Synopsis
--------

.. BEGIN SYNOPSIS

.. synopsis::

    string replace [-a | --all] [-f | --filter] [-i | --ignore-case]
                   [-r | --regex] [(-m | --max-matches) MAX] [-q | --quiet]
                   PATTERN REPLACEMENT [STRING ...]

.. END SYNOPSIS

Description
-----------

.. BEGIN DESCRIPTION

``string replace`` is similar to ``string match`` but replaces non-overlapping matching substrings with a replacement string and prints the result. By default, *PATTERN* is treated as a literal substring to be matched.

If **-r** or **--regex** is given, *PATTERN* is interpreted as a Perl-compatible regular expression, and *REPLACEMENT* can contain C-style escape sequences like **\t** as well as references to capturing groups by number or name as *$n* or *${n}*.

If you specify the **-f** or **--filter** flag then each input string is printed only if a replacement was done. This is useful where you would otherwise use this idiom: ``a_cmd | string match pattern | string replace pattern new_pattern``. You can instead just write ``a_cmd | string replace --filter pattern new_pattern``.

If **--max-matches MAX** or **-m MAX** is used, ``string replace`` will stop all processing after MAX lines of input have matched the specified pattern. In the event of ``--filter`` or ``-f``, this means the output will be MAX lines in length. This can be used as an "early exit" optimization when processing long inputs but expecting a limited and fixed number of outputs that might be found considerably before the input stream has been exhausted.

Exit status: 0 if at least one replacement was performed, or 1 otherwise.

.. END DESCRIPTION

Examples
--------

.. BEGIN EXAMPLES

Replace Literal Examples
^^^^^^^^^^^^^^^^^^^^^^^^

::

    >_ string replace is was 'blue is my favorite'
    blue was my favorite

    >_ string replace 3rd last 1st 2nd 3rd
    1st
    2nd
    last

    >_ string replace -a ' ' _ 'spaces to underscores'
    spaces_to_underscores

Replace Regex Examples
^^^^^^^^^^^^^^^^^^^^^^

::

    >_ string replace -r -a '[^\d.]+' ' ' '0 one two 3.14 four 5x'
    0 3.14 5

    >_ string replace -r '(\w+)\s+(\w+)' '$2 $1 $$' 'left right'
    right left $

    >_ string replace -r '\s*newline\s*' '\n' 'put a newline here'
    put a
    here

.. END EXAMPLES