Files
reference/docs/sed.html
2022-09-30 15:18:53 +00:00

369 lines
26 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" data-color-mode="dark">
<head>
<meta charset="utf-8">
<title>Sed 备忘清单
&#x26; sed cheatsheet &#x26; Quick Reference</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta description="入门为开发人员分享快速参考备忘单。">
<meta keywords="Quick,Reference,cheatsheet,sed">
<link rel="icon" href="data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%221em%22%20width%3D%221em%22%3E%20%3Cpath%20opacity%3D%22.4%22%20d%3D%22m21.66%2010.44-.98%204.18c-.84%203.61-2.5%205.07-5.62%204.77-.5-.04-1.04-.13-1.62-.27l-1.68-.4c-4.17-.99-5.46-3.05-4.48-7.23l.98-4.19c.2-.85.44-1.59.74-2.2%201.17-2.42%203.16-3.07%206.5-2.28l1.67.39c4.19.98%205.47%203.05%204.49%207.23Z%22%20fill%3D%22%23777%22%2F%3E%20%3Cpath%20d%3D%22M15.06%2019.39c-.62.42-1.4.77-2.35%201.08l-1.58.52c-3.97%201.28-6.06.21-7.35-3.76L2.5%2013.28c-1.28-3.97-.22-6.07%203.75-7.35l1.58-.52c.41-.13.8-.24%201.17-.31-.3.61-.54%201.35-.74%202.2l-.98%204.19c-.98%204.18.31%206.24%204.48%207.23l1.68.4c.58.14%201.12.23%201.62.27Zm2.43-8.88c-.06%200-.12-.01-.19-.02l-4.85-1.23a.75.75%200%200%201%20.37-1.45l4.85%201.23a.748.748%200%200%201-.18%201.47Z%22%20fill%3D%22%23999%22%20%2F%3E%20%3Cpath%20d%3D%22M14.56%2013.89c-.06%200-.12-.01-.19-.02l-2.91-.74a.75.75%200%200%201%20.37-1.45l2.91.74c.4.1.64.51.54.91-.08.34-.38.56-.72.56Z%22%20fill%3D%22%23999%22%20%2F%3E%20%3C%2Fsvg%3E" type="image/svg+xml">
<link rel="stylesheet" href="../style/style.css">
</head>
<body><nav class="header-nav"><div class="max-container"><a href="../index.html" class="logo"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" height="1em" width="1em">
<path opacity=".4" d="m21.66 10.44-.98 4.18c-.84 3.61-2.5 5.07-5.62 4.77-.5-.04-1.04-.13-1.62-.27l-1.68-.4c-4.17-.99-5.46-3.05-4.48-7.23l.98-4.19c.2-.85.44-1.59.74-2.2 1.17-2.42 3.16-3.07 6.5-2.28l1.67.39c4.19.98 5.47 3.05 4.49 7.23Z" fill="currentColor"></path>
<path d="M15.06 19.39c-.62.42-1.4.77-2.35 1.08l-1.58.52c-3.97 1.28-6.06.21-7.35-3.76L2.5 13.28c-1.28-3.97-.22-6.07 3.75-7.35l1.58-.52c.41-.13.8-.24 1.17-.31-.3.61-.54 1.35-.74 2.2l-.98 4.19c-.98 4.18.31 6.24 4.48 7.23l1.68.4c.58.14 1.12.23 1.62.27Zm2.43-8.88c-.06 0-.12-.01-.19-.02l-4.85-1.23a.75.75 0 0 1 .37-1.45l4.85 1.23a.748.748 0 0 1-.18 1.47Z" fill="currentColor"></path>
<path d="M14.56 13.89c-.06 0-.12-.01-.19-.02l-2.91-.74a.75.75 0 0 1 .37-1.45l2.91.74c.4.1.64.51.54.91-.08.34-.38.56-.72.56Z" fill="currentColor"></path>
</svg>
<span class="title">Quick Reference</span></a><div class="menu"><a href="https://github.com/jaywcjlove/reference/blob/main/docs/sed.md" class="" target="__blank"><svg viewBox="0 0 36 36" fill="currentColor" height="1em" width="1em"><path d="m33 6.4-3.7-3.7a1.71 1.71 0 0 0-2.36 0L23.65 6H6a2 2 0 0 0-2 2v22a2 2 0 0 0 2 2h22a2 2 0 0 0 2-2V11.76l3-3a1.67 1.67 0 0 0 0-2.36ZM18.83 20.13l-4.19.93 1-4.15 9.55-9.57 3.23 3.23ZM29.5 9.43 26.27 6.2l1.85-1.85 3.23 3.23Z"></path><path fill="none" d="M0 0h36v36H0z"></path></svg><span>编辑</span></a><a href="https://github.com/jaywcjlove/reference" class="" target="__blank"><svg viewBox="0 0 16 16" fill="currentColor" height="1em" width="1em"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg></a></div></div></nav><div class="wrap max-container"><header class="wrap-header h1wrap"><h1 id="sed-备忘清单"><a aria-hidden="true" tabindex="-1" href="#sed-备忘清单"><span class="icon icon-link"></span></a>Sed 备忘清单</h1><div class="wrap-body">
</div></header><div class="h1wrap-body"><div class="wrap"><div class="wrap-header h2wrap"><h2 id="入门"><a aria-hidden="true" tabindex="-1" href="#入门"><span class="icon icon-link"></span></a>入门</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap"><div class="wrap-header h3wrap"><h3 id="sed-用法"><a aria-hidden="true" tabindex="-1" href="#sed-用法"><span class="icon icon-link"></span></a>Sed 用法</h3><div class="wrap-body">
<p>语法</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token punctuation">[</span>options<span class="token punctuation">]</span> <span class="token builtin class-name">command</span> <span class="token punctuation">[</span>input-file<span class="token punctuation">]</span>
</span></code></pre>
<p>带管道</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">cat</span> report.txt <span class="token operator">|</span> <span class="token function">sed</span> <span class="token string">'s/Nick/John/g'</span>
</span></code></pre>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token builtin class-name">echo</span> <span class="token string">'123abc'</span> <span class="token operator">|</span> <span class="token function">sed</span> <span class="token string">'s/[0-9]+//g'</span>
</span></code></pre>
</div></div></div><div class="wrap col-span-2"><div class="wrap-header h3wrap"><h3 id="选项示例"><a aria-hidden="true" tabindex="-1" href="#选项示例"><span class="icon icon-link"></span></a>选项示例</h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2-->
<table class="show-header">
<thead>
<tr>
<th>参数</th>
<th>示例</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>-i</code></td>
<td>sed -ibak 's/On/Off/' php.ini</td>
<td>直接备份和修改输入文件</td>
</tr>
<tr>
<td><code>-E</code></td>
<td>sed -E 's/[0-9]+//g' input-file</td>
<td>使用扩展正则表达式</td>
</tr>
<tr>
<td><code>-n</code></td>
<td>sed -n '3 p' config.conf</td>
<td>禁止默认图案空间打印</td>
</tr>
<tr>
<td><code>-f</code></td>
<td>sed -f script.sed config.conf</td>
<td>执行 sed 脚本文件</td>
</tr>
<tr>
<td><code>-e</code></td>
<td>sed -e 'command1' -e 'command2' input-file</td>
<td>执行多个 sed 命令</td>
</tr>
</tbody>
</table><!--rehype:className=show-header-->
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="多个命令"><a aria-hidden="true" tabindex="-1" href="#多个命令"><span class="icon icon-link"></span></a>多个命令</h3><div class="wrap-body">
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token builtin class-name">echo</span> <span class="token string">"hello world"</span> <span class="token operator">|</span> <span class="token function">sed</span> <span class="token parameter variable">-e</span> <span class="token string">'s/h/H/g'</span> <span class="token parameter variable">-e</span> <span class="token string">'s/w/W/g'</span>
</span><span class="code-line line-number" line="2">Hello World
</span></code></pre>
<p>使用 <code>-e</code> 执行多个 sed 命令</p>
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="sed-脚本"><a aria-hidden="true" tabindex="-1" href="#sed-脚本"><span class="icon icon-link"></span></a>Sed 脚本</h3><div class="wrap-body">
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token builtin class-name">echo</span> <span class="token string">'s/h/H/g'</span> <span class="token operator">>></span> hello.sed
</span><span class="code-line line-number" line="2">$ <span class="token builtin class-name">echo</span> <span class="token string">'s/w/W/g'</span> <span class="token operator">>></span> hello.sed
</span><span class="code-line line-number" line="3">$ <span class="token builtin class-name">echo</span> <span class="token string">"hello world"</span> <span class="token operator">|</span> <span class="token function">sed</span> <span class="token parameter variable">-f</span> hello.sed
</span><span class="code-line line-number" line="4">Hello World
</span></code></pre>
<p>使用 <code>-f</code> 执行 sed 脚本文件</p>
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="examples"><a aria-hidden="true" tabindex="-1" href="#examples"><span class="icon icon-link"></span></a>Examples</h3><div class="wrap-body">
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'s/old/new/g'</span> file.txt
</span><span class="code-line line-number" line="2">$ <span class="token function">sed</span> <span class="token string">'s/old/new/g'</span> file.txt <span class="token operator">></span> new.txt
</span><span class="code-line line-number" line="3">$ <span class="token function">sed</span> <span class="token string">'s/old/new/g'</span> <span class="token parameter variable">-i</span> file.txt
</span><span class="code-line line-number" line="4">$ <span class="token function">sed</span> <span class="token string">'s/old/new/g'</span> <span class="token parameter variable">-i.backup</span> file.txt
</span></code></pre>
</div></div></div></div></div><div class="wrap"><div class="wrap-header h2wrap"><h2 id="sed-命令"><a aria-hidden="true" tabindex="-1" href="#sed-命令"><span class="icon icon-link"></span></a>Sed 命令</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap col-span-2"><div class="wrap-header h3wrap"><h3 id="命令"><a aria-hidden="true" tabindex="-1" href="#命令"><span class="icon icon-link"></span></a>命令</h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2-->
<table class="show-header">
<thead>
<tr>
<th>Command</th>
<th>Example</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>p</code></td>
<td>sed -n '1,4 p' input.txt</td>
<td>Print lines 1-4</td>
</tr>
<tr>
<td><code>p</code></td>
<td>sed -n -e '1,4 p' -e '6,7 p' input.txt</td>
<td>Print lines 1-4 and 6-7</td>
</tr>
<tr>
<td><code>d</code></td>
<td>sed '1,4 d' input.txt</td>
<td>Print lines except 1-4</td>
</tr>
<tr>
<td><code>w</code></td>
<td>sed -n '1,4 w output.txt' input.txt</td>
<td>Write pattern space to file</td>
</tr>
<tr>
<td><code>a</code></td>
<td>sed '2 a new-line' input.txt</td>
<td>Append line after</td>
</tr>
<tr>
<td><code>i</code></td>
<td>sed '2 i new-line' input.txt</td>
<td>Insert line before</td>
</tr>
</tbody>
</table><!--rehype:className=show-header-->
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="空间命令"><a aria-hidden="true" tabindex="-1" href="#空间命令"><span class="icon icon-link"></span></a>空间命令</h3><div class="wrap-body">
<table>
<thead>
<tr>
<th>Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>n</code></td>
<td>打印模式空间,空模式空间,读取下一行</td>
</tr>
<tr>
<td><code>x</code></td>
<td>用保持空间交换模式空间</td>
</tr>
<tr>
<td><code>h</code></td>
<td>复制模式空间以保持空间</td>
</tr>
<tr>
<td><code>H</code></td>
<td>追加模式空间以保持空间</td>
</tr>
<tr>
<td><code>g</code></td>
<td>将保持空间复制到模式空间</td>
</tr>
<tr>
<td><code>G</code></td>
<td>将保持空间附加到模式空间</td>
</tr>
</tbody>
</table>
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="flags"><a aria-hidden="true" tabindex="-1" href="#flags"><span class="icon icon-link"></span></a>Flags</h3><div class="wrap-body">
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'s/old/new/[flags]'</span> <span class="token punctuation">[</span>input-file<span class="token punctuation">]</span>
</span></code></pre>
<hr>
<table>
<thead>
<tr>
<th>Flag</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>g</code></td>
<td>全球替代</td>
</tr>
<tr>
<td><code>1,2...</code></td>
<td>替换第 n 次出现</td>
</tr>
<tr>
<td><code>p</code></td>
<td>仅打印替换的行</td>
</tr>
<tr>
<td><code>w</code></td>
<td>仅将替换的行写入文件</td>
</tr>
<tr>
<td><code>I</code></td>
<td>搜索时忽略大小写</td>
</tr>
<tr>
<td><code>e</code></td>
<td>在命令行中替换并执行</td>
</tr>
</tbody>
</table>
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="循环命令"><a aria-hidden="true" tabindex="-1" href="#循环命令"><span class="icon icon-link"></span></a>循环命令</h3><div class="wrap-body">
<table>
<thead>
<tr>
<th>Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>b label</code></td>
<td>分支到标签(用于循环)</td>
</tr>
<tr>
<td><code>t label</code></td>
<td>仅在成功替换时分支到标签(用于循环)</td>
</tr>
<tr>
<td><code>:label</code></td>
<td>b 和 t 命令的标签(用于循环)</td>
</tr>
<tr>
<td><code>N</code></td>
<td>将下一行追加到模式空间</td>
</tr>
<tr>
<td><code>P</code></td>
<td>多行打印第一行</td>
</tr>
<tr>
<td><code>D</code></td>
<td>删除多行中的第一行</td>
</tr>
</tbody>
</table>
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="杂项标志"><a aria-hidden="true" tabindex="-1" href="#杂项标志"><span class="icon icon-link"></span></a>杂项标志</h3><div class="wrap-body">
<table>
<thead>
<tr>
<th>Flag</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>/ | ^ @ ! #</code></td>
<td>替换分隔符可以是任何字符</td>
</tr>
<tr>
<td><code>&#x26;</code></td>
<td>获取匹配的模式</td>
</tr>
<tr>
<td><code>( ) \1 \2 \3</code></td>
<td>使用 <code>(</code><code>)</code> 进行分组。<br>使用 <code>\1</code><code>\2</code> 替换来引用组</td>
</tr>
</tbody>
</table>
</div></div></div></div></div><div class="wrap"><div class="wrap-header h2wrap"><h2 id="sed-示例"><a aria-hidden="true" tabindex="-1" href="#sed-示例"><span class="icon icon-link"></span></a>Sed 示例</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap row-span-2"><div class="wrap-header h3wrap"><h3 id="替换文本"><a aria-hidden="true" tabindex="-1" href="#替换文本"><span class="icon icon-link"></span></a>替换文本</h3><div class="wrap-body"><!--rehype:wrap-class=row-span-2-->
<p>替换所有出现的字符串</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'s/old/new/g'</span> file.txt
</span></code></pre>
<p>仅替换第 n 次出现的字符串</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'s/old/new/2'</span> file.txt
</span></code></pre>
<p>仅在第 5 行替换替换字符串</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'5 s/old/new/'</span> file.txt
</span></code></pre>
<p>将“world”替换为“universe”但前提是该行以“hello”开头</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'/hello/s/world/universe/'</span> file.txt
</span></code></pre>
<p>从每行的末尾删除“\”</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'s/\\$//'</span> file.txt
</span></code></pre>
<p>删除每行开头的所有空格</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'s/^\s*//'</span> file.txt
</span></code></pre>
<p>删除评论。 即使是那些在行尾的</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'s/#.*$//'</span> file.txt
</span></code></pre>
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="搜索文本"><a aria-hidden="true" tabindex="-1" href="#搜索文本"><span class="icon icon-link"></span></a>搜索文本</h3><div class="wrap-body">
<p>搜索字符串并仅打印匹配的行</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token parameter variable">-n</span> <span class="token string">'/hello/p'</span> file.txt
</span></code></pre>
<p>不区分大小写的搜索</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token parameter variable">-n</span> <span class="token string">'/hello/Ip'</span> file.txt
</span></code></pre>
<p>搜索字符串,但仅输出不匹配的行</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token parameter variable">-n</span> <span class="token string">'/hello/!p'</span> file.txt
</span></code></pre>
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="追加行"><a aria-hidden="true" tabindex="-1" href="#追加行"><span class="icon icon-link"></span></a>追加行</h3><div class="wrap-body">
<p>在第 2 行之后追加一行</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'2a Text after line 2'</span> file.txt
</span></code></pre>
<p>在文件末尾追加一行</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'$a THE END!'</span> file.txt
</span></code></pre>
<p>从第 3 行开始,每 3 行后追加一行</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'3~3a Some text'</span> file.txt
</span></code></pre>
</div></div></div><div class="wrap col-span-2"><div class="wrap-header h3wrap"><h3 id="编号"><a aria-hidden="true" tabindex="-1" href="#编号"><span class="icon icon-link"></span></a>编号</h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2-->
<p>文件的数字行(简单的左对齐)</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token operator">=</span> file.txt <span class="token operator">|</span> <span class="token function">sed</span> <span class="token string">'N;s/\n/\t/'</span>
</span></code></pre>
<p>文件的数字行(数字在左,右对齐)</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token operator">=</span> file.txt <span class="token operator">|</span> <span class="token function">sed</span> <span class="token string">'N; s/^/ /; s/ *\(.\{6,\}\)\n/\1 /'</span>
</span></code></pre>
<p>文件的数字行,但如果行不为空,则仅打印数字</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'/./='</span> file.txt <span class="token operator">|</span> <span class="token function">sed</span> <span class="token string">'/./N; s/\n/ /'</span>
</span></code></pre>
<p>计算行数模拟“wc -l”</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token parameter variable">-n</span> <span class="token string">'$='</span>
</span></code></pre>
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="前置行"><a aria-hidden="true" tabindex="-1" href="#前置行"><span class="icon icon-link"></span></a>前置行</h3><div class="wrap-body">
<p>在第 5 行之前插入文本</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'5i line number five'</span> file.txt
</span></code></pre>
<p>在包含“hello”的每一行之前插入“示例</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'/hello/i Example: '</span> file.txt
</span></code></pre>
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="删除行"><a aria-hidden="true" tabindex="-1" href="#删除行"><span class="icon icon-link"></span></a>删除行</h3><div class="wrap-body">
<p>删除文件中的第 5-7 行</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'5,7d'</span> file.txt
</span></code></pre>
<p>删除从第 3 行开始的每 2 行</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'3~2d'</span> file.txt
</span></code></pre>
<p>删除文件的最后一行</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'$d'</span> file.txt
</span></code></pre>
<p>删除以“Hello”开头的行</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'/^Hello/d'</span> file.txt
</span></code></pre>
<p>删除所有空行</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'/^$/d'</span> file.txt
</span></code></pre>
<p>删除以“#”开头的行</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'/^#/d'</span> file.txt
</span></code></pre>
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="文件间距"><a aria-hidden="true" tabindex="-1" href="#文件间距"><span class="icon icon-link"></span></a>文件间距</h3><div class="wrap-body">
<p>双倍行距</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> G
</span></code></pre>
<p>删除所有空行和双空格</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'/^$/d;G'</span>
</span></code></pre>
<p>三倍空间文件</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'G;G'</span>
</span></code></pre>
<p>撤消双倍行距</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'n;d'</span>
</span></code></pre>
<p>在匹配“正则表达式”的行上方插入一个空行</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'/regex/{x;p;x;}'</span>
</span></code></pre>
<p>在匹配“正则表达式”的行下方插入一个空行</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'/regex/G'</span>
</span></code></pre>
<p>在匹配“正则表达式”的行周围插入一个空行</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">sed</span> <span class="token string">'/regex/{x;p;x;G;}'</span>
</span></code></pre>
</div></div></div></div></div><div class="wrap"><div class="wrap-header h2wrap"><h2 id="另见"><a aria-hidden="true" tabindex="-1" href="#另见"><span class="icon icon-link"></span></a>另见</h2><div class="wrap-body">
<ul>
<li><a href="https://gist.github.com/ssstonebraker/6140154">sed 备忘单</a> <em>(gist.github.com)</em></li>
</ul>
</div></div></div></div></div><footer class="footer-wrap"><footer class="max-container">© 2022 Kenny Wang, All rights reserved.</footer></footer></body>
</html>