Skip to content

Commit a35df03

Browse files
updated sub with rg post
1 parent bbcb76d commit a35df03

File tree

2 files changed

+39
-8
lines changed

2 files changed

+39
-8
lines changed

Diff for: atom.xml

+17-4
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,10 @@ $ cat ip.txt
6767
dark red, light red
6868
light orange
6969
red sky
70+
</span></code></pre>
71+
<p>If you have <a href="https://joeyh.name/code/moreutils/">moreutils installed</a>, then you could use <code>sponge</code> as well.</p>
72+
<pre style="background-color:#f5f5f5;">
73+
<code><span style="color:#1f1f1f;">rg </span><span style="color:#72ab00;">--</span><span style="color:#1f1f1f;">passthru </span><span style="color:#d07711;">'blue' </span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">r </span><span style="color:#d07711;">'red'</span><span style="color:#1f1f1f;"> ip.txt </span><span style="color:#72ab00;">|</span><span style="color:#1f1f1f;"> sponge ip.txt
7074
</span></code></pre><br>
7175
<h2 id="rust-regex-and-pcre2">Rust regex and PCRE2<a class="zola-anchor" href="#rust-regex-and-pcre2" aria-label="Anchor link for: rust-regex-and-pcre2">🔗</a></h2>
7276
<p>By default, <code>rg</code> uses Rust regular expressions, which is much more featured compared to <code>GNU sed</code>. The main feature not supported is backreference within regexp definition (for performance reasons). See <a href="https://docs.rs/regex/1.3.9/regex/index.html">Rust regex documentation</a> for regular expression syntax and features. <code>rg</code> supports Unicode by default.</p>
@@ -107,6 +111,15 @@ $ </span><span style="color:#7f8989;"># all lowercase
107111
$ echo </span><span style="color:#d07711;">"$s" </span><span style="color:#72ab00;">|</span><span style="color:#1f1f1f;"> rg </span><span style="color:#72ab00;">--</span><span style="color:#1f1f1f;">passthru </span><span style="color:#72ab00;">-</span><span style="color:#5597d6;">P </span><span style="color:#d07711;">'\G([a-z]+)(-)?' </span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">r </span><span style="color:#d07711;">'($1)$2'
108112
</span><span style="color:#1f1f1f;">(apple)</span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">(fig)</span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">(mango) guava grape
109113
</span></code></pre><br>
114+
<h2 id="extract-and-modify">Extract and modify<a class="zola-anchor" href="#extract-and-modify" aria-label="Anchor link for: extract-and-modify">🔗</a></h2>
115+
<p>The <code>-r</code> option can be used when <code>-o</code> option is active too. The example shown below is not easy to do with <code>sed</code>.</p>
116+
<pre style="background-color:#f5f5f5;">
117+
<code><span style="color:#1f1f1f;">$ s=</span><span style="color:#d07711;">'0501 035 154 12 26 98234'
118+
119+
</span><span style="color:#7f8989;"># numbers >= 100 and ignore leading zeros
120+
</span><span style="color:#1f1f1f;">$ echo </span><span style="color:#d07711;">"$s" </span><span style="color:#72ab00;">|</span><span style="color:#1f1f1f;"> rg </span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">woP </span><span style="color:#d07711;">'0*+(\d{3,})' </span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">r </span><span style="color:#d07711;">'"$1"' </span><span style="color:#72ab00;">|</span><span style="color:#1f1f1f;"> paste </span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">sd,
121+
</span><span style="color:#d07711;">"501"</span><span style="color:#1f1f1f;">,</span><span style="color:#d07711;">"154"</span><span style="color:#1f1f1f;">,</span><span style="color:#d07711;">"98234"
122+
</span></code></pre><br>
110123
<h2 id="fixed-string-matching">Fixed string matching<a class="zola-anchor" href="#fixed-string-matching" aria-label="Anchor link for: fixed-string-matching">🔗</a></h2>
111124
<p>Like <code>grep</code>, the <code>-F</code> option will allow fixed strings to be matched, a handy option that I feel every search and replace tool should provide.</p>
112125
<pre style="background-color:#f5f5f5;">
@@ -117,10 +130,10 @@ foo
117130
</span></code></pre>
118131
<p><code>-F</code> doesn't extend to replacement section though, so you need <code>$$</code> instead of <code>$</code> character to represent it literally.</p>
119132
<pre style="background-color:#f5f5f5;">
120-
<code><span style="color:#1f1f1f;">$ echo </span><span style="color:#d07711;">'a.*{2}-b' </span><span style="color:#72ab00;">|</span><span style="color:#1f1f1f;"> rg </span><span style="color:#72ab00;">--</span><span style="color:#1f1f1f;">passthru </span><span style="color:#72ab00;">-</span><span style="color:#5597d6;">F </span><span style="color:#d07711;">'.*{2}' </span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">r </span><span style="color:#d07711;">'+$x'</span><span style="color:#1f1f1f;">
121-
a</span><span style="color:#72ab00;">+-</span><span style="color:#1f1f1f;">b
122-
$ echo </span><span style="color:#d07711;">'a.*{2}-b' </span><span style="color:#72ab00;">|</span><span style="color:#1f1f1f;"> rg </span><span style="color:#72ab00;">--</span><span style="color:#1f1f1f;">passthru </span><span style="color:#72ab00;">-</span><span style="color:#5597d6;">F </span><span style="color:#d07711;">'.*{2}' </span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">r </span><span style="color:#d07711;">'+$$x'</span><span style="color:#1f1f1f;">
123-
a</span><span style="color:#72ab00;">+</span><span style="color:#5597d6;">$x</span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">b
133+
<code><span style="color:#1f1f1f;">$ echo </span><span style="color:#d07711;">'a.*{2}-b' </span><span style="color:#72ab00;">|</span><span style="color:#1f1f1f;"> rg </span><span style="color:#72ab00;">--</span><span style="color:#1f1f1f;">passthru </span><span style="color:#72ab00;">-</span><span style="color:#5597d6;">F </span><span style="color:#d07711;">'.*{2}' </span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">r </span><span style="color:#d07711;">'+$x\tc'</span><span style="color:#1f1f1f;">
134+
a</span><span style="color:#72ab00;">+</span><span style="color:#1f1f1f;">\tc</span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">b
135+
$ echo </span><span style="color:#d07711;">'a.*{2}-b' </span><span style="color:#72ab00;">|</span><span style="color:#1f1f1f;"> rg </span><span style="color:#72ab00;">--</span><span style="color:#1f1f1f;">passthru </span><span style="color:#72ab00;">-</span><span style="color:#5597d6;">F </span><span style="color:#d07711;">'.*{2}' </span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">r </span><span style="color:#d07711;">'+$$x\tc'</span><span style="color:#1f1f1f;">
136+
a</span><span style="color:#72ab00;">+</span><span style="color:#5597d6;">$x</span><span style="color:#1f1f1f;">\tc</span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">b
124137
</span></code></pre><br>
125138
<h2 id="multiline-matching">Multiline matching<a class="zola-anchor" href="#multiline-matching" aria-label="Anchor link for: multiline-matching">🔗</a></h2>
126139
<p>Another handy option is <code>-U</code> which enables multiline matching.</p>

Diff for: substitution-with-ripgrep/index.html

+22-4
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,11 @@ <h2 class="post-toc-title">Contents</h2>
135135

136136
</li>
137137

138+
<li>
139+
<a href="https://learnbyexample.github.io/substitution-with-ripgrep/#extract-and-modify" class="toc-link">Extract and modify</a>
140+
141+
</li>
142+
138143
<li>
139144
<a href="https://learnbyexample.github.io/substitution-with-ripgrep/#fixed-string-matching" class="toc-link">Fixed string matching</a>
140145

@@ -233,6 +238,10 @@ <h2 id="in-place-workaround">In-place workaround<a class="zola-anchor" href="#in
233238
dark red, light red
234239
light orange
235240
red sky
241+
</span></code></pre>
242+
<p>If you have <a href="https://joeyh.name/code/moreutils/">moreutils installed</a>, then you could use <code>sponge</code> as well.</p>
243+
<pre style="background-color:#f5f5f5;">
244+
<code><span style="color:#1f1f1f;">rg </span><span style="color:#72ab00;">--</span><span style="color:#1f1f1f;">passthru </span><span style="color:#d07711;">&#39;blue&#39; </span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">r </span><span style="color:#d07711;">&#39;red&#39;</span><span style="color:#1f1f1f;"> ip.txt </span><span style="color:#72ab00;">|</span><span style="color:#1f1f1f;"> sponge ip.txt
236245
</span></code></pre><br>
237246
<h2 id="rust-regex-and-pcre2">Rust regex and PCRE2<a class="zola-anchor" href="#rust-regex-and-pcre2" aria-label="Anchor link for: rust-regex-and-pcre2">🔗</a></h2>
238247
<p>By default, <code>rg</code> uses Rust regular expressions, which is much more featured compared to <code>GNU sed</code>. The main feature not supported is backreference within regexp definition (for performance reasons). See <a href="https://docs.rs/regex/1.3.9/regex/index.html">Rust regex documentation</a> for regular expression syntax and features. <code>rg</code> supports Unicode by default.</p>
@@ -273,6 +282,15 @@ <h2 id="rust-regex-and-pcre2">Rust regex and PCRE2<a class="zola-anchor" href="#
273282
$ echo </span><span style="color:#d07711;">&quot;$s&quot; </span><span style="color:#72ab00;">|</span><span style="color:#1f1f1f;"> rg </span><span style="color:#72ab00;">--</span><span style="color:#1f1f1f;">passthru </span><span style="color:#72ab00;">-</span><span style="color:#5597d6;">P </span><span style="color:#d07711;">&#39;\G([a-z]+)(-)?&#39; </span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">r </span><span style="color:#d07711;">&#39;($1)$2&#39;
274283
</span><span style="color:#1f1f1f;">(apple)</span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">(fig)</span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">(mango) guava grape
275284
</span></code></pre><br>
285+
<h2 id="extract-and-modify">Extract and modify<a class="zola-anchor" href="#extract-and-modify" aria-label="Anchor link for: extract-and-modify">🔗</a></h2>
286+
<p>The <code>-r</code> option can be used when <code>-o</code> option is active too. The example shown below is not easy to do with <code>sed</code>.</p>
287+
<pre style="background-color:#f5f5f5;">
288+
<code><span style="color:#1f1f1f;">$ s=</span><span style="color:#d07711;">&#39;0501 035 154 12 26 98234&#39;
289+
290+
</span><span style="color:#7f8989;"># numbers &gt;= 100 and ignore leading zeros
291+
</span><span style="color:#1f1f1f;">$ echo </span><span style="color:#d07711;">&quot;$s&quot; </span><span style="color:#72ab00;">|</span><span style="color:#1f1f1f;"> rg </span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">woP </span><span style="color:#d07711;">&#39;0*+(\d{3,})&#39; </span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">r </span><span style="color:#d07711;">&#39;&quot;$1&quot;&#39; </span><span style="color:#72ab00;">|</span><span style="color:#1f1f1f;"> paste </span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">sd,
292+
</span><span style="color:#d07711;">&quot;501&quot;</span><span style="color:#1f1f1f;">,</span><span style="color:#d07711;">&quot;154&quot;</span><span style="color:#1f1f1f;">,</span><span style="color:#d07711;">&quot;98234&quot;
293+
</span></code></pre><br>
276294
<h2 id="fixed-string-matching">Fixed string matching<a class="zola-anchor" href="#fixed-string-matching" aria-label="Anchor link for: fixed-string-matching">🔗</a></h2>
277295
<p>Like <code>grep</code>, the <code>-F</code> option will allow fixed strings to be matched, a handy option that I feel every search and replace tool should provide.</p>
278296
<pre style="background-color:#f5f5f5;">
@@ -283,10 +301,10 @@ <h2 id="fixed-string-matching">Fixed string matching<a class="zola-anchor" href=
283301
</span></code></pre>
284302
<p><code>-F</code> doesn't extend to replacement section though, so you need <code>$$</code> instead of <code>$</code> character to represent it literally.</p>
285303
<pre style="background-color:#f5f5f5;">
286-
<code><span style="color:#1f1f1f;">$ echo </span><span style="color:#d07711;">&#39;a.*{2}-b&#39; </span><span style="color:#72ab00;">|</span><span style="color:#1f1f1f;"> rg </span><span style="color:#72ab00;">--</span><span style="color:#1f1f1f;">passthru </span><span style="color:#72ab00;">-</span><span style="color:#5597d6;">F </span><span style="color:#d07711;">&#39;.*{2}&#39; </span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">r </span><span style="color:#d07711;">&#39;+$x&#39;</span><span style="color:#1f1f1f;">
287-
a</span><span style="color:#72ab00;">+-</span><span style="color:#1f1f1f;">b
288-
$ echo </span><span style="color:#d07711;">&#39;a.*{2}-b&#39; </span><span style="color:#72ab00;">|</span><span style="color:#1f1f1f;"> rg </span><span style="color:#72ab00;">--</span><span style="color:#1f1f1f;">passthru </span><span style="color:#72ab00;">-</span><span style="color:#5597d6;">F </span><span style="color:#d07711;">&#39;.*{2}&#39; </span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">r </span><span style="color:#d07711;">&#39;+$$x&#39;</span><span style="color:#1f1f1f;">
289-
a</span><span style="color:#72ab00;">+</span><span style="color:#5597d6;">$x</span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">b
304+
<code><span style="color:#1f1f1f;">$ echo </span><span style="color:#d07711;">&#39;a.*{2}-b&#39; </span><span style="color:#72ab00;">|</span><span style="color:#1f1f1f;"> rg </span><span style="color:#72ab00;">--</span><span style="color:#1f1f1f;">passthru </span><span style="color:#72ab00;">-</span><span style="color:#5597d6;">F </span><span style="color:#d07711;">&#39;.*{2}&#39; </span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">r </span><span style="color:#d07711;">&#39;+$x\tc&#39;</span><span style="color:#1f1f1f;">
305+
a</span><span style="color:#72ab00;">+</span><span style="color:#1f1f1f;">\tc</span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">b
306+
$ echo </span><span style="color:#d07711;">&#39;a.*{2}-b&#39; </span><span style="color:#72ab00;">|</span><span style="color:#1f1f1f;"> rg </span><span style="color:#72ab00;">--</span><span style="color:#1f1f1f;">passthru </span><span style="color:#72ab00;">-</span><span style="color:#5597d6;">F </span><span style="color:#d07711;">&#39;.*{2}&#39; </span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">r </span><span style="color:#d07711;">&#39;+$$x\tc&#39;</span><span style="color:#1f1f1f;">
307+
a</span><span style="color:#72ab00;">+</span><span style="color:#5597d6;">$x</span><span style="color:#1f1f1f;">\tc</span><span style="color:#72ab00;">-</span><span style="color:#1f1f1f;">b
290308
</span></code></pre><br>
291309
<h2 id="multiline-matching">Multiline matching<a class="zola-anchor" href="#multiline-matching" aria-label="Anchor link for: multiline-matching">🔗</a></h2>
292310
<p>Another handy option is <code>-U</code> which enables multiline matching.</p>

0 commit comments

Comments
 (0)