<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Shell on MEMEX</title>
    <link>https://memex.keinmal.top/tags/shell/</link>
    <description>Recent content in Shell on MEMEX</description>
    <generator>Hugo --0.164.0</generator>
    <language>zh-cn</language><managingEditor>wyz2016zxc@outlook.com(Hiraeth)</managingEditor><webMaster>wyz2016zxc@outlook.com(Hiraeth)</webMaster><lastBuildDate>Wed, 30 Sep 2026 05:31:28 +0000</lastBuildDate><atom:link href="https://memex.keinmal.top/tags/shell/index.xml" rel="self" type="application/rss+xml" /><item>
      <title>一些sh脚本</title>
      <link>https://memex.keinmal.top/docs/dev/scripts-example/</link>
      <pubDate>Sat, 25 Oct 2025 00:00:00 +0000</pubDate><author>wyz2016zxc@outlook.com(Hiraeth)</author><guid>https://memex.keinmal.top/docs/dev/scripts-example/</guid>
      <description>&lt;h1 id=&#34;scripts-example&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#scripts-example&#34;&gt;#&lt;/a&gt;scripts example&lt;/h1&gt;
&lt;details open&gt;
    &lt;summary&gt;TEXT&lt;/summary&gt;&lt;pre
        class=&#34;codeblock&#34;
      &gt;&lt;code class=&#34;language-&#34; data-lang=&#34;&#34;&gt;find . -name &amp;#34;*.md&amp;#34; -type f -exec grep -lE &amp;#34;Finished&amp;#34; {} &amp;#43; | while read file; do
  if ! grep -q &amp;#34;2025-05-31&amp;#34; &amp;#34;$file&amp;#34;; then
    number=$(awk &amp;#39;/^pages: [0-9]&amp;#43;/ {print $2}&amp;#39; &amp;#34;$file&amp;#34;)
    if [ -n &amp;#34;$number&amp;#34; ]; then
      sed -i &amp;#34;/Finished/i\\- 2025-05-31: $number&amp;#34; &amp;#34;$file&amp;#34;
      echo &amp;#34;已处理: $file - 插入: - 2025-05-31: $number&amp;#34;
    else
      echo &amp;#34;跳过: $file (未找到pages数字或有效日期)&amp;#34;
    fi
  else
    echo &amp;#34;排除: $file (包含 2025-05-31)&amp;#34;
  fi
done&lt;/code&gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;details open&gt;
    &lt;summary&gt;TEXT&lt;/summary&gt;&lt;pre
        class=&#34;codeblock&#34;
      &gt;&lt;code class=&#34;language-&#34; data-lang=&#34;&#34;&gt;# 创建备份和日志
backup_dir=&amp;#34;backup_$(date &amp;#43;%Y%m%d)&amp;#34;
mkdir -p &amp;#34;$backup_dir&amp;#34;
log_file=&amp;#34;replace_log.txt&amp;#34;

echo &amp;#34;开始替换操作 $(date)&amp;#34; &amp;gt; &amp;#34;$log_file&amp;#34;

find . -name &amp;#34;*.md&amp;#34; -type f | while read file; do
    # 检查文件是否包含目标字符串
    if grep -q &amp;#34;- 2025-06-01: Finished&amp;#34; &amp;#34;$file&amp;#34;; then
        # 创建备份
        cp &amp;#34;$file&amp;#34; &amp;#34;$backup_dir/$(basename &amp;#34;$file&amp;#34;)&amp;#34;
        # 执行替换
        sed -i &amp;#39;s/- 2025-06-01: Finished/- 2025-05-31: Finished/g&amp;#39; &amp;#34;$file&amp;#34;
        # 记录日志
        echo &amp;#34;已修改: $file&amp;#34; &amp;gt;&amp;gt; &amp;#34;$log_file&amp;#34;
        # 显示变更
        echo &amp;#34;=== $file 修改内容 ===&amp;#34;
        diff &amp;#34;$backup_dir/$(basename &amp;#34;$file&amp;#34;)&amp;#34; &amp;#34;$file&amp;#34; || true
    else
        echo &amp;#34;无修改: $file&amp;#34; &amp;gt;&amp;gt; &amp;#34;$log_file&amp;#34;
    fi
done

echo &amp;#34;操作完成，备份在 $backup_dir，日志见 $log_file&amp;#34;&lt;/code&gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;details open&gt;
    &lt;summary&gt;TEXT&lt;/summary&gt;&lt;pre
        class=&#34;codeblock&#34;
      &gt;&lt;code class=&#34;language-&#34; data-lang=&#34;&#34;&gt;find . -name &amp;#34;*.md&amp;#34; -type f -exec grep -l &amp;#34;lists: book&amp;#34; {} &amp;#43; | \
while read file; do
    if ! grep -q &amp;#34;Finished&amp;#34; &amp;#34;$file&amp;#34;; then
        # 确保文件末尾有空行（避免追加内容粘连）
        [ -n &amp;#34;$(tail -c 1 &amp;#34;$file&amp;#34;)&amp;#34; ] &amp;amp;&amp;amp; echo &amp;gt;&amp;gt; &amp;#34;$file&amp;#34;
        # 追加内容
        echo &amp;#34;- 2025-06-01: Finished&amp;#34; &amp;gt;&amp;gt; &amp;#34;$file&amp;#34;
        echo &amp;#34;已处理: $file&amp;#34;
    else
        echo &amp;#34;跳过: $file (已包含 Finished)&amp;#34;
    fi
done&lt;/code&gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;details open&gt;
    &lt;summary&gt;TEXT&lt;/summary&gt;&lt;pre
        class=&#34;codeblock&#34;
      &gt;&lt;code class=&#34;language-&#34; data-lang=&#34;&#34;&gt;find . -name &amp;#34;*.md&amp;#34; -type f -exec grep -L &amp;#34;Finished&amp;#34; {} &amp;#43; | while read file; do
    awk &amp;#39;BEGIN {done=0} /^---/ &amp;amp;&amp;amp; !done {print; print &amp;#34;- 2025-06-01: Finished&amp;#34;; done=1; next} 1&amp;#39; &amp;#34;$file&amp;#34; &amp;gt; tmp &amp;amp;&amp;amp; mv tmp &amp;#34;$file&amp;#34;
done&lt;/code&gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;</description></item><item>
      <title>一些sh脚本</title>
      <link>https://memex.keinmal.top/docs/code/shell-scripts-example/</link>
      <pubDate>Sat, 25 Oct 2025 00:00:00 +0000</pubDate><author>wyz2016zxc@outlook.com(Hiraeth)</author><guid>https://memex.keinmal.top/docs/code/shell-scripts-example/</guid>
      <description>&lt;h1 id=&#34;scripts-example&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#scripts-example&#34;&gt;#&lt;/a&gt;scripts example&lt;/h1&gt;
&lt;details open&gt;
    &lt;summary&gt;TEXT&lt;/summary&gt;&lt;pre
        class=&#34;codeblock&#34;
      &gt;&lt;code class=&#34;language-&#34; data-lang=&#34;&#34;&gt;find . -name &amp;#34;*.md&amp;#34; -type f -exec grep -lE &amp;#34;Finished&amp;#34; {} &amp;#43; | while read file; do
  if ! grep -q &amp;#34;2025-05-31&amp;#34; &amp;#34;$file&amp;#34;; then
    number=$(awk &amp;#39;/^pages: [0-9]&amp;#43;/ {print $2}&amp;#39; &amp;#34;$file&amp;#34;)
    if [ -n &amp;#34;$number&amp;#34; ]; then
      sed -i &amp;#34;/Finished/i\\- 2025-05-31: $number&amp;#34; &amp;#34;$file&amp;#34;
      echo &amp;#34;已处理: $file - 插入: - 2025-05-31: $number&amp;#34;
    else
      echo &amp;#34;跳过: $file (未找到pages数字或有效日期)&amp;#34;
    fi
  else
    echo &amp;#34;排除: $file (包含 2025-05-31)&amp;#34;
  fi
done&lt;/code&gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;details open&gt;
    &lt;summary&gt;TEXT&lt;/summary&gt;&lt;pre
        class=&#34;codeblock&#34;
      &gt;&lt;code class=&#34;language-&#34; data-lang=&#34;&#34;&gt;# 创建备份和日志
backup_dir=&amp;#34;backup_$(date &amp;#43;%Y%m%d)&amp;#34;
mkdir -p &amp;#34;$backup_dir&amp;#34;
log_file=&amp;#34;replace_log.txt&amp;#34;

echo &amp;#34;开始替换操作 $(date)&amp;#34; &amp;gt; &amp;#34;$log_file&amp;#34;

find . -name &amp;#34;*.md&amp;#34; -type f | while read file; do
    # 检查文件是否包含目标字符串
    if grep -q &amp;#34;- 2025-06-01: Finished&amp;#34; &amp;#34;$file&amp;#34;; then
        # 创建备份
        cp &amp;#34;$file&amp;#34; &amp;#34;$backup_dir/$(basename &amp;#34;$file&amp;#34;)&amp;#34;
        # 执行替换
        sed -i &amp;#39;s/- 2025-06-01: Finished/- 2025-05-31: Finished/g&amp;#39; &amp;#34;$file&amp;#34;
        # 记录日志
        echo &amp;#34;已修改: $file&amp;#34; &amp;gt;&amp;gt; &amp;#34;$log_file&amp;#34;
        # 显示变更
        echo &amp;#34;=== $file 修改内容 ===&amp;#34;
        diff &amp;#34;$backup_dir/$(basename &amp;#34;$file&amp;#34;)&amp;#34; &amp;#34;$file&amp;#34; || true
    else
        echo &amp;#34;无修改: $file&amp;#34; &amp;gt;&amp;gt; &amp;#34;$log_file&amp;#34;
    fi
done

echo &amp;#34;操作完成，备份在 $backup_dir，日志见 $log_file&amp;#34;&lt;/code&gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;details open&gt;
    &lt;summary&gt;TEXT&lt;/summary&gt;&lt;pre
        class=&#34;codeblock&#34;
      &gt;&lt;code class=&#34;language-&#34; data-lang=&#34;&#34;&gt;find . -name &amp;#34;*.md&amp;#34; -type f -exec grep -l &amp;#34;lists: book&amp;#34; {} &amp;#43; | \
while read file; do
    if ! grep -q &amp;#34;Finished&amp;#34; &amp;#34;$file&amp;#34;; then
        # 确保文件末尾有空行（避免追加内容粘连）
        [ -n &amp;#34;$(tail -c 1 &amp;#34;$file&amp;#34;)&amp;#34; ] &amp;amp;&amp;amp; echo &amp;gt;&amp;gt; &amp;#34;$file&amp;#34;
        # 追加内容
        echo &amp;#34;- 2025-06-01: Finished&amp;#34; &amp;gt;&amp;gt; &amp;#34;$file&amp;#34;
        echo &amp;#34;已处理: $file&amp;#34;
    else
        echo &amp;#34;跳过: $file (已包含 Finished)&amp;#34;
    fi
done&lt;/code&gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;details open&gt;
    &lt;summary&gt;TEXT&lt;/summary&gt;&lt;pre
        class=&#34;codeblock&#34;
      &gt;&lt;code class=&#34;language-&#34; data-lang=&#34;&#34;&gt;find . -name &amp;#34;*.md&amp;#34; -type f -exec grep -L &amp;#34;Finished&amp;#34; {} &amp;#43; | while read file; do
    awk &amp;#39;BEGIN {done=0} /^---/ &amp;amp;&amp;amp; !done {print; print &amp;#34;- 2025-06-01: Finished&amp;#34;; done=1; next} 1&amp;#39; &amp;#34;$file&amp;#34; &amp;gt; tmp &amp;amp;&amp;amp; mv tmp &amp;#34;$file&amp;#34;
done&lt;/code&gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;</description></item><item>
      <title>linux手册</title>
      <link>https://memex.keinmal.top/docs/linux/linux-handbook/</link>
      <pubDate>Sat, 25 Oct 2025 00:00:00 +0000</pubDate><author>wyz2016zxc@outlook.com(Hiraeth)</author><guid>https://memex.keinmal.top/docs/linux/linux-handbook/</guid>
      <description>&lt;h1 id=&#34;linux-handbook&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#linux-handbook&#34;&gt;#&lt;/a&gt;Linux Handbook&lt;/h1&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;details open&gt;
    &lt;summary&gt;TEXT&lt;/summary&gt;&lt;pre
        class=&#34;codeblock&#34;
      &gt;&lt;code class=&#34;language-&#34; data-lang=&#34;&#34;&gt;bash &amp;lt;(curl -sSL https://linuxmirrors.cn/main.sh)&lt;/code&gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;details open&gt;
    &lt;summary&gt;TEXT&lt;/summary&gt;&lt;pre
        class=&#34;codeblock&#34;
      &gt;&lt;code class=&#34;language-&#34; data-lang=&#34;&#34;&gt;bash &amp;lt;(curl -sSL https://linuxmirrors.cn/docker.sh)&lt;/code&gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;details open&gt;
    &lt;summary&gt;TEXT&lt;/summary&gt;&lt;pre
        class=&#34;codeblock&#34;
      &gt;&lt;code class=&#34;language-&#34; data-lang=&#34;&#34;&gt;bash &amp;lt;(curl -sSL https://linuxmirrors.cn/docker.sh) --only-registry&lt;/code&gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;h2 id=&#34;file&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#file&#34;&gt;##&lt;/a&gt;file&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;filedialog&lt;/code&gt; 是其他应用需要选择文件时的弹窗&lt;/p&gt;
&lt;h2 id=&#34;boot&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#boot&#34;&gt;##&lt;/a&gt;boot&lt;/h2&gt;
&lt;h2 id=&#34;display-manager&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#display-manager&#34;&gt;##&lt;/a&gt;display manager&lt;/h2&gt;
&lt;p&gt;lightdm 有一堆莫名其妙的问题&lt;/p&gt;
&lt;p&gt;gtk display还不知道怎么搞&lt;/p&gt;</description></item><item>
      <title>cli收集</title>
      <link>https://memex.keinmal.top/docs/dev/cli/</link>
      <pubDate>Thu, 23 Oct 2025 00:00:00 +0000</pubDate><author>wyz2016zxc@outlook.com(Hiraeth)</author><guid>https://memex.keinmal.top/docs/dev/cli/</guid>
      <description>收集一些cli的命令工具用法</description></item><item>
      <title>shell概览</title>
      <link>https://memex.keinmal.top/docs/linux/shell/</link>
      <pubDate>Mon, 05 May 2025 00:00:00 +0000</pubDate><author>wyz2016zxc@outlook.com(Hiraeth)</author><guid>https://memex.keinmal.top/docs/linux/shell/</guid>
      <description>主要靠ai生成的shell基本知识手册</description></item><item>
      <title>grep</title>
      <link>https://memex.keinmal.top/docs/dev/grep/</link>
      <pubDate>Mon, 05 May 2025 00:00:00 +0000</pubDate><author>wyz2016zxc@outlook.com(Hiraeth)</author><guid>https://memex.keinmal.top/docs/dev/grep/</guid>
      <description>&lt;h2 id=&#34;grep&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#grep&#34;&gt;##&lt;/a&gt;grep&lt;/h2&gt;
&lt;p&gt;ref: 
&lt;/p&gt;
&lt;h2 id=&#34;count-occurrence--c&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#count-occurrence--c&#34;&gt;##&lt;/a&gt;Count Occurrence: &lt;code&gt;-c&lt;/code&gt;&lt;/h2&gt;
&lt;details open&gt;
    &lt;summary&gt;TEXT&lt;/summary&gt;&lt;pre
        class=&#34;codeblock&#34;
      &gt;&lt;code class=&#34;language-&#34; data-lang=&#34;&#34;&gt;$ cat example.txt | grep -c good
2&lt;/code&gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;h2 id=&#34;get-context--c&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#get-context--c&#34;&gt;##&lt;/a&gt;Get Context: &lt;code&gt;-C&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Set &lt;code&gt;--context=0&lt;/code&gt; to print that line alone&lt;/p&gt;
&lt;details open&gt;
    &lt;summary&gt;TEXT&lt;/summary&gt;&lt;pre
        class=&#34;codeblock&#34;
      &gt;&lt;code class=&#34;language-&#34; data-lang=&#34;&#34;&gt;$ cat example.txt | grep --context=0 &amp;#34;good luck&amp;#34;
good luck&lt;/code&gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;p&gt;Set &lt;code&gt;--context=1&lt;/code&gt; to print 1 line below and 1 line above&lt;/p&gt;
&lt;details open&gt;
    &lt;summary&gt;TEXT&lt;/summary&gt;&lt;pre
        class=&#34;codeblock&#34;
      &gt;&lt;code class=&#34;language-&#34; data-lang=&#34;&#34;&gt;$ cat example.txt | grep --context=1 &amp;#34;good luck&amp;#34;
hello world
good luck
good day&lt;/code&gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;p&gt;or use &lt;code&gt;-C 1&lt;/code&gt;&lt;/p&gt;</description></item><item>
      <title>grep</title>
      <link>https://memex.keinmal.top/docs/code/grep/</link>
      <pubDate>Mon, 05 May 2025 00:00:00 +0000</pubDate><author>wyz2016zxc@outlook.com(Hiraeth)</author><guid>https://memex.keinmal.top/docs/code/grep/</guid>
      <description>&lt;h2 id=&#34;grep&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#grep&#34;&gt;##&lt;/a&gt;grep&lt;/h2&gt;
&lt;p&gt;ref: 
&lt;/p&gt;
&lt;h2 id=&#34;count-occurrence--c&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#count-occurrence--c&#34;&gt;##&lt;/a&gt;Count Occurrence: &lt;code&gt;-c&lt;/code&gt;&lt;/h2&gt;
&lt;details open&gt;
    &lt;summary&gt;TEXT&lt;/summary&gt;&lt;pre
        class=&#34;codeblock&#34;
      &gt;&lt;code class=&#34;language-&#34; data-lang=&#34;&#34;&gt;$ cat example.txt | grep -c good
2&lt;/code&gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;h2 id=&#34;get-context--c&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#get-context--c&#34;&gt;##&lt;/a&gt;Get Context: &lt;code&gt;-C&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Set &lt;code&gt;--context=0&lt;/code&gt; to print that line alone&lt;/p&gt;
&lt;details open&gt;
    &lt;summary&gt;TEXT&lt;/summary&gt;&lt;pre
        class=&#34;codeblock&#34;
      &gt;&lt;code class=&#34;language-&#34; data-lang=&#34;&#34;&gt;$ cat example.txt | grep --context=0 &amp;#34;good luck&amp;#34;
good luck&lt;/code&gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;p&gt;Set &lt;code&gt;--context=1&lt;/code&gt; to print 1 line below and 1 line above&lt;/p&gt;
&lt;details open&gt;
    &lt;summary&gt;TEXT&lt;/summary&gt;&lt;pre
        class=&#34;codeblock&#34;
      &gt;&lt;code class=&#34;language-&#34; data-lang=&#34;&#34;&gt;$ cat example.txt | grep --context=1 &amp;#34;good luck&amp;#34;
hello world
good luck
good day&lt;/code&gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;p&gt;or use &lt;code&gt;-C 1&lt;/code&gt;&lt;/p&gt;</description></item><item>
      <title>awk</title>
      <link>https://memex.keinmal.top/docs/dev/awk/</link>
      <pubDate>Mon, 05 May 2025 00:00:00 +0000</pubDate><author>wyz2016zxc@outlook.com(Hiraeth)</author><guid>https://memex.keinmal.top/docs/dev/awk/</guid>
      <description>&lt;h1 id=&#34;awk&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#awk&#34;&gt;#&lt;/a&gt;awk&lt;/h1&gt;
&lt;h2 id=&#34;tldr&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#tldr&#34;&gt;##&lt;/a&gt;tldr&lt;/h2&gt;
&lt;p&gt;A versatile programming language for working on files.
More information: 
.&lt;/p&gt;
&lt;p&gt;Print the fifth column (a.k.a. field) in a space-separated file:&lt;/p&gt;
&lt;details open&gt;
    &lt;summary&gt;TEXT&lt;/summary&gt;&lt;pre
        class=&#34;codeblock&#34;
      &gt;&lt;code class=&#34;language-&#34; data-lang=&#34;&#34;&gt;awk &amp;#39;{print $5}&amp;#39; path/to/file&lt;/code&gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;p&gt;Print the second column of the lines containing &amp;ldquo;foo&amp;rdquo; in a space-separated file:&lt;/p&gt;
&lt;details open&gt;
    &lt;summary&gt;TEXT&lt;/summary&gt;&lt;pre
        class=&#34;codeblock&#34;
      &gt;&lt;code class=&#34;language-&#34; data-lang=&#34;&#34;&gt;awk &amp;#39;/foo/ {print $2}&amp;#39; path/to/file&lt;/code&gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;p&gt;Print the last column of each line in a file, using a comma (instead of space) as a field separator:&lt;/p&gt;</description></item><item>
      <title>sed cheatsheet</title>
      <link>https://memex.keinmal.top/docs/dev/sed/</link>
      <pubDate>Thu, 01 May 2025 00:00:00 +0000</pubDate><author>wyz2016zxc@outlook.com(Hiraeth)</author><guid>https://memex.keinmal.top/docs/dev/sed/</guid>
      <description>&lt;h1 id=&#34;sed&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#sed&#34;&gt;#&lt;/a&gt;sed&lt;/h1&gt;
&lt;h2 id=&#34;tldr&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#tldr&#34;&gt;##&lt;/a&gt;tldr&lt;/h2&gt;
&lt;details open&gt;
    &lt;summary&gt;sh&lt;/summary&gt;&lt;pre
        class=&#34;chroma codeblock&#34;
      &gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;
          &gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sed -i &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;[range]s/[patern]/[replacement]/[options]&amp;#34;&lt;/span&gt; file_*
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sed -i &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2,5s|[patern]|[replacement]|[options]&amp;#34;&lt;/span&gt; file_*&lt;/span&gt;&lt;/span&gt;&lt;/code
        &gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;h3 id=&#34;search-for-text&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#search-for-text&#34;&gt;###&lt;/a&gt;Search for text&lt;/h3&gt;
&lt;p&gt;Search for a string and only print the lines that were matched&lt;/p&gt;
&lt;details open&gt;
    &lt;summary&gt;sh&lt;/summary&gt;&lt;pre
        class=&#34;chroma codeblock&#34;
      &gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;
          &gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sed -n &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/hello/p&amp;#39;&lt;/span&gt; file.txt&lt;/span&gt;&lt;/span&gt;&lt;/code
        &gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;p&gt;Case insensitive search&lt;/p&gt;
&lt;details open&gt;
    &lt;summary&gt;sh&lt;/summary&gt;&lt;pre
        class=&#34;chroma codeblock&#34;
      &gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;
          &gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sed -n &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/hello/Ip&amp;#39;&lt;/span&gt; file.txt&lt;/span&gt;&lt;/span&gt;&lt;/code
        &gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;h3 id=&#34;sed-usage&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#sed-usage&#34;&gt;###&lt;/a&gt;Sed Usage&lt;/h3&gt;
&lt;p&gt;Syntax&lt;/p&gt;
&lt;details open&gt;
    &lt;summary&gt;shell&lt;/summary&gt;&lt;pre
        class=&#34;chroma codeblock&#34;
      &gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;
          &gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sed &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;options&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; command &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;input-file&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code
        &gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;p&gt;With pipeline&lt;/p&gt;
&lt;details open&gt;
    &lt;summary&gt;sh&lt;/summary&gt;&lt;pre
        class=&#34;chroma codeblock&#34;
      &gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;
          &gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ cat report.txt | sed &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;s/Nick/John/g&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code
        &gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;details open&gt;
    &lt;summary&gt;sh&lt;/summary&gt;&lt;pre
        class=&#34;chroma codeblock&#34;
      &gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;
          &gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;123abc&amp;#39;&lt;/span&gt; | sed &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;s/[0-9]+//g&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code
        &gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;h3 id=&#34;option-examples&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#option-examples&#34;&gt;###&lt;/a&gt;Option Examples&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Option&lt;/th&gt;
					&lt;th&gt;Example&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;-i&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;sed -ibak &amp;rsquo;s/On/Off/&amp;rsquo; php.ini&lt;/td&gt;
					&lt;td&gt;Backup and modify input file directly&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;-E&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;sed -E &amp;rsquo;s/[0-9]+//g&amp;rsquo; input-file&lt;/td&gt;
					&lt;td&gt;Use extended regular expressions&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;-n&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;sed -n &amp;lsquo;3 p&amp;rsquo; config.conf&lt;/td&gt;
					&lt;td&gt;Suppress default pattern space printing&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;-f&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;sed -f script.sed config.conf&lt;/td&gt;
					&lt;td&gt;Execute sed script file&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;-e&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;sed -e &amp;lsquo;command1&amp;rsquo; -e &amp;lsquo;command2&amp;rsquo; input-file&lt;/td&gt;
					&lt;td&gt;Execute multiple sed commands&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;multiple-commands&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#multiple-commands&#34;&gt;###&lt;/a&gt;Multiple commands&lt;/h3&gt;
&lt;details open&gt;
    &lt;summary&gt;sh&lt;/summary&gt;&lt;pre
        class=&#34;chroma codeblock&#34;
      &gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;
          &gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;hello world&amp;#34;&lt;/span&gt; | sed -e &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;s/h/H/g&amp;#39;&lt;/span&gt; -e &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;s/w/W/g&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Hello World&lt;/span&gt;&lt;/span&gt;&lt;/code
        &gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;p&gt;Use &lt;code&gt;-e&lt;/code&gt; to execute multiple sed commands&lt;/p&gt;</description></item><item>
      <title>sed cheatsheet</title>
      <link>https://memex.keinmal.top/docs/code/sed/</link>
      <pubDate>Thu, 01 May 2025 00:00:00 +0000</pubDate><author>wyz2016zxc@outlook.com(Hiraeth)</author><guid>https://memex.keinmal.top/docs/code/sed/</guid>
      <description>&lt;h1 id=&#34;sed&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#sed&#34;&gt;#&lt;/a&gt;sed&lt;/h1&gt;
&lt;h2 id=&#34;tldr&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#tldr&#34;&gt;##&lt;/a&gt;tldr&lt;/h2&gt;
&lt;details open&gt;
    &lt;summary&gt;sh&lt;/summary&gt;&lt;pre
        class=&#34;chroma codeblock&#34;
      &gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;
          &gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sed -i &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;[range]s/[patern]/[replacement]/[options]&amp;#34;&lt;/span&gt; file_*
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sed -i &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2,5s|[patern]|[replacement]|[options]&amp;#34;&lt;/span&gt; file_*&lt;/span&gt;&lt;/span&gt;&lt;/code
        &gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;h3 id=&#34;search-for-text&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#search-for-text&#34;&gt;###&lt;/a&gt;Search for text&lt;/h3&gt;
&lt;p&gt;Search for a string and only print the lines that were matched&lt;/p&gt;
&lt;details open&gt;
    &lt;summary&gt;sh&lt;/summary&gt;&lt;pre
        class=&#34;chroma codeblock&#34;
      &gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;
          &gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sed -n &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/hello/p&amp;#39;&lt;/span&gt; file.txt&lt;/span&gt;&lt;/span&gt;&lt;/code
        &gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;p&gt;Case insensitive search&lt;/p&gt;
&lt;details open&gt;
    &lt;summary&gt;sh&lt;/summary&gt;&lt;pre
        class=&#34;chroma codeblock&#34;
      &gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;
          &gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sed -n &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/hello/Ip&amp;#39;&lt;/span&gt; file.txt&lt;/span&gt;&lt;/span&gt;&lt;/code
        &gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;h3 id=&#34;sed-usage&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#sed-usage&#34;&gt;###&lt;/a&gt;Sed Usage&lt;/h3&gt;
&lt;p&gt;Syntax&lt;/p&gt;
&lt;details open&gt;
    &lt;summary&gt;shell&lt;/summary&gt;&lt;pre
        class=&#34;chroma codeblock&#34;
      &gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;
          &gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sed &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;options&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; command &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;input-file&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code
        &gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;p&gt;With pipeline&lt;/p&gt;
&lt;details open&gt;
    &lt;summary&gt;sh&lt;/summary&gt;&lt;pre
        class=&#34;chroma codeblock&#34;
      &gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;
          &gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ cat report.txt | sed &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;s/Nick/John/g&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code
        &gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;details open&gt;
    &lt;summary&gt;sh&lt;/summary&gt;&lt;pre
        class=&#34;chroma codeblock&#34;
      &gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;
          &gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;123abc&amp;#39;&lt;/span&gt; | sed &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;s/[0-9]+//g&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code
        &gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;h3 id=&#34;option-examples&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#option-examples&#34;&gt;###&lt;/a&gt;Option Examples&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Option&lt;/th&gt;
					&lt;th&gt;Example&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;-i&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;sed -ibak &amp;rsquo;s/On/Off/&amp;rsquo; php.ini&lt;/td&gt;
					&lt;td&gt;Backup and modify input file directly&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;-E&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;sed -E &amp;rsquo;s/[0-9]+//g&amp;rsquo; input-file&lt;/td&gt;
					&lt;td&gt;Use extended regular expressions&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;-n&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;sed -n &amp;lsquo;3 p&amp;rsquo; config.conf&lt;/td&gt;
					&lt;td&gt;Suppress default pattern space printing&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;-f&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;sed -f script.sed config.conf&lt;/td&gt;
					&lt;td&gt;Execute sed script file&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;-e&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;sed -e &amp;lsquo;command1&amp;rsquo; -e &amp;lsquo;command2&amp;rsquo; input-file&lt;/td&gt;
					&lt;td&gt;Execute multiple sed commands&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;multiple-commands&#34;&gt;
  &lt;a class=&#34;anchor inpage&#34; href=&#34;#multiple-commands&#34;&gt;###&lt;/a&gt;Multiple commands&lt;/h3&gt;
&lt;details open&gt;
    &lt;summary&gt;sh&lt;/summary&gt;&lt;pre
        class=&#34;chroma codeblock&#34;
      &gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;
          &gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;hello world&amp;#34;&lt;/span&gt; | sed -e &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;s/h/H/g&amp;#39;&lt;/span&gt; -e &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;s/w/W/g&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Hello World&lt;/span&gt;&lt;/span&gt;&lt;/code
        &gt;&lt;button type=&#34;button&#34; class=&#34;copybtn&#34;&gt;copy&lt;/button&gt;&lt;/pre&gt;&lt;/details&gt;&lt;p&gt;Use &lt;code&gt;-e&lt;/code&gt; to execute multiple sed commands&lt;/p&gt;</description></item></channel>
</rss>
