第1章 sed命令详解

1.1 查找固定的某一行

1.1.1 awk命令方法

1.1.2 grep方法

1.1.3 sed方法

[root@znix ~]# sed ‘/clsn/d’ person.txt 102,znix,CTO 103,Nmtui,COO 104,yy,CFO 105,hehe,CIO

1.2 sed的替换

1.2.1 clsn替换程clsnedu

1.2.2 把文件中的数字都替换成样式。

       g表示把sed命令找到的内容进行替换,不加g <span style=“font-family: 新宋体; times new roman"4times new roman”; background: lime;">只替换找到的第一个

1.2.3 把前面正则表达式找到的第二列内容进行替换

1.2.4 把前面正则表达式找到的第二列以后内容进行替换

1.3 单引号 双引号 不加引号的区别

1.3.1 单引号: 所见即所得

1.3.2 双引号: 对特殊符号进行解析

1.3.3 不加引号:支持通配符

1.4 sed与变量

1.4.1 在变量中放入一行内容

1.4.2 查看下文件的内容

1.4.3 定义一个变量,对变量进行替换

1.4.4 将两个变量分别放置,用变量替换变量。

1.5 企业案例】系统开机启动项优化

1.5.1 各项服务的含义

1.5.2 第一步把想要保留的排除走

1.5.3 第二步取出服务的名字

1.5.4 第三步拼接出想要的形状

1.5.5 第四步交给bash执行

1.5.6 第五步检查结果

1.5.7 <span style=“font-family: 新宋体; times new roman"4times new roman”;background: lime;">简化命令

1.5.7.1 示例一:

 [root@znix ~]# chkconfig |sed -r ‘/sshd|network|crond|rsyslog|sysstat/d;s#(^.)0:.#chkconfig \1 off#g’|bash 

1.5.7.2 示例二

 [root@znix ~]# chkconfig |sed -rn ‘/sshd|network|crond|rsyslog|sysstat/!s#^(.)0:.#chkconfig \1 off#gp’|bash 

1.6 &符号的使用

[root@znix ~]# echo clsn123|sed ’s#.*1#&#g’ clsn123

[root@znix ~]# echo clsn123|sed ’s#.*1#{&}#g’ {clsn1}23

1.7 练习题】把person.txt 中包含yy的行 这一行里面的数字替换为空

1.7.1 文件内容

1.7.2 /yy/查找yy这行,使用s###g对文件内容进行替换

1.7.3 将不包含yy的行进行替换

1.8 查看sed更多的帮助信息info<span style=“font-family: 新宋体; times new roman"4times new roman”;background: aqua;">】

第2章 shell 编程

2.1 什么是shell

       命令大礼包

       判断 循环

2.1.1 shell的作用:    

       为重复性的工作节约时间,省事

2.2 如何查看当前用户的命令解释器

2.2.1.1 shell修改为 sh 会有一些问题

2.3 书写shell脚本的要求

脚本内容

/sbin/ifconfig eth0|awk -F "[: ]+" NR==2{print $4}

脚本中尽量使用命令的绝对路径

2.4 shell脚本之变量

2.4.1 什么是变量

举个栗子:

       修改变量的时候最好使用引号将内容引起来。

2.4.2 环境变量(全局变量)

2.4.2.1 特点

2.4.2.2 查看系统中的环境变量

2.5 手动创建一个环境变量

2.5.1 创建一个普通变量

2.5.2 临时创建环境变量

2.5.3 让环境变量永久生效

2.5.3.1  export ZNIX=clsn 放入 /etc/profile

2.5.3.2 <span style=“font-family: 新宋体; times new roman"4times new roman”;background: lime;">让写入的内容生效 ,使用source /etc/profile

2.6 shell脚本与变量

2.6.1 脚本的内容:

#!/bin/bash echo $a

2.6.2 shell与普通变量

2.6.3 shell与全局变量

2.7 与用户有关的环境变量配置文件/目录

2.7.1 全局环境变量配置文件

2.7.2 用户环境变量

2.8 变量命名规则

       但是不能是以数字开头    

2.8.1 <span style=“font-family: 新宋体; times new roman"4times new roman”;background: aqua;">取变量的时候将变量用{ } <span style=“font-family: 新宋体; times new roman"4times new roman”;background: aqua;">包起来

[root@znix ~]# echo $wwwday [root@znix ~]# echo ${www}day 123day

2.9 shell中的特殊变量

2.9.1 $数字 $0

[root@znix scripts]# sh para.sh a b c a b c … para.sh

2.9.2 [<span style=“font-family: 新宋体; times new roman"4times new roman”;background: aqua;">练习] 使用变量写一个简单的计算器。

2.9.2.1 先写出一个模板。

[root@znix scripts]# sh cal.sh 3

2.9.2.2 将期中的内容替换成为变量

[root@znix scripts]# sh cal.sh 100 50 150

2.9.2.3 将里面的计算方式增加。

2.9.2.4 执行脚本,进行计算。

2.9.3 awk的计算方法

2.9.3.1 awk使用 -v 参数 指定变量。

2.9.3.2 awk命令放入脚本中

awk -vnum1=$a -vnum2=$b BEGIN{print num1/num2}

2.9.3.3 测试脚本,检查脚本的执行结果。

第3章 vim 高级使用技巧

3.1 vim中进行查找替换

<td style="width: 352.95pt; border-top: 1pt solid #9bbb59; border-right: 1pt solid #9bbb59; border-bottom: 1pt solid #9bbb59; border-left: none; background: #9bbb59; padding: 0cm 5.4pt;" valign="top" width="471">
  <p>
    <strong><span style="font-family: 新宋体; times new roman"4times new roman"; color: white;">含义</span></strong>
  </p>
</td>
<td style="width: 352.95pt; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; background: #EAF1DD; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="471">
  <p>
    <span style="font-family: 新宋体;">从第</span>4<span style="font-family: 新宋体;">行到最后一行进行替换</span>&nbsp;&nbsp;&nbsp;
  </p>
</td>
<td style="width: 352.95pt; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="471">
  <p>
    <span style="font-family: 新宋体;">从第</span>5<span style="font-family: 新宋体;">行到最后一行进行替换</span>
  </p>
</td>
<td style="width: 352.95pt; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; background: #EAF1DD; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="471">
  <p>
    <span style="font-family: 新宋体;">从第一行到最后一行进行替换</span>
  </p>
</td>
<td style="width: 352.95pt; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="471">
  <p>
    <span style="font-family: 新宋体;">从第一行到最后一行进行替换</span>
  </p>
</td>
<td style="width: 352.95pt; border-top: none; border-left: none; border-bottom: solid #C2D69B 1.0pt; border-right: solid #C2D69B 1.0pt; background: #EAF1DD; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="471">
  <p>
    <span style="font-family: 新宋体;">从当前行到最后一行(</span>. <span style="font-family: 新宋体;">表示当前行)</span>
  </p>
</td>

 3.2 vim 快捷键

 

vim命令粘贴带#号或注释信息格式会出现混乱情况解决?

问题说明:
  每次复制代码时,如果代码里有 //或# 这样的注释就容易让格式乱掉,显示的内容不整齐,并不是所期望的显示格式。

原因分析:
  是由于vim编辑命令的自动缩进功能所影响,因此粘贴带注释的代码时可以取消自动缩进

问题解决:
  vim在粘贴代码时会自动缩进,把代码搞得一团糟糕,甚至可能因为某行的一个注释造成后面的代码全部被注释掉;最初的解决办法为:用vi去打开文件再粘贴上去,但其实是可以对vim编辑器进行设置修改的。

  说明:然后再进入插入模式粘贴,代码就不会被自动缩进了,可以敲代码的时候需要自动缩进,所以还需要改回来

  比较方便的方法就是修改用户家目录下的 .vimrc配置文件:

  说明:

    以后在插入模式下,只要按F9键就可以快速切换自动缩进模式了

 用sed和awk实现将文本中的上下两行合并为一行

  文本内容

  使用sed命令实现

  N 命令,将下一行读入并附加到当前行后面,以 \n (换行符)分隔,一起存在模式缓冲区内。

  awk命令实现

 

    <li>
      <a href="#12_sed">1.2 sed的替换</a><ul>
        <li>
          <a href="#121_clsnclsnedu">1.2.1 将clsn替换程clsnedu</a>
        </li>
        <li>
          <a href="#122">1.2.2 把文件中的数字都替换成样式。</a>
        </li>
        <li>
          <a href="#123">1.2.3 把前面正则表达式找到的第二列内容进行替换</a>
        </li>
        <li>
          <a href="#124">1.2.4 把前面正则表达式找到的第二列以后内容进行替换</a>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#13">1.3 单引号 双引号 不加引号的区别</a><ul>
        <li>
          <a href="#131_nbsp">1.3.1 单引号:&nbsp;所见即所得</a>
        </li>
        <li>
          <a href="#132_nbsp">1.3.2 双引号:&nbsp;对特殊符号进行解析</a>
        </li>
        <li>
          <a href="#133">1.3.3 不加引号:支持通配符</a>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#14_sed">1.4 sed与变量</a><ul>
        <li>
          <a href="#141">1.4.1 在变量中放入一行内容</a>
        </li>
        <li>
          <a href="#142">1.4.2 查看下文件的内容</a>
        </li>
        <li>
          <a href="#143">1.4.3 定义一个变量,对变量进行替换</a>
        </li>
        <li>
          <a href="#144">1.4.4 将两个变量分别放置,用变量替换变量。</a>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#15">1.5 【企业案例】系统开机启动项优化</a><ul>
        <li>
          <a href="#151">1.5.1 各项服务的含义</a>
        </li>
        <li>
          <a href="#152">1.5.2 第一步把想要保留的排除走</a>
        </li>
        <li>
          <a href="#153">1.5.3 第二步取出服务的名字</a>
        </li>
        <li>
          <a href="#154">1.5.4 第三步拼接出想要的形状</a>
        </li>
        <li>
          <a href="#155_bash">1.5.5 第四步交给bash执行</a>
        </li>
        <li>
          <a href="#156">1.5.6 第五步检查结果</a>
        </li>
        <li>
          <a href="#157">1.5.7 简化命令</a><ul>
            <li>
              <a href="#1571nbsp">1.5.7.1&nbsp;示例一:</a>
            </li>
            <li>
              <a href="#1572nbsp">1.5.7.2&nbsp;示例二</a>
            </li>
          </ul>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#16">1.6 &符号的使用</a>
    </li>
    <li>
      <a href="#17_persontxt_yy">1.7 【练习题】把person.txt 中包含yy的行 这一行里面的数字替换为空</a><ul>
        <li>
          <a href="#171">1.7.1 文件内容</a>
        </li>
        <li>
          <a href="#172_yyyysg">1.7.2 /yy/查找yy这行,使用s###g对文件内容进行替换</a>
        </li>
        <li>
          <a href="#173_yy">1.7.3 将不包含yy的行进行替换</a>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#18_sedinfo">1.8 查看sed更多的帮助信息【info】</a>
    </li>
  </ul>
</li>

<li>
  <a href="#2_shell">第2章 shell 编程</a><ul>
    <li>
      <a href="#21_shell">2.1 什么是shell</a><ul>
        <li>
          <a href="#211_shellnbspnbspnbspnbsp">2.1.1 shell的作用:&nbsp;&nbsp;&nbsp;&nbsp;</a>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#22">2.2 如何查看当前用户的命令解释器</a><ul>
        <li>
          <ul>
            <li>
              <a href="#2211nbspshell_sh">2.2.1.1&nbsp;shell修改为 sh 会有一些问题</a>
            </li>
          </ul>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#23_shell">2.3 书写shell脚本的要求</a>
    </li>
    <li>
      <a href="#24_shell">2.4 shell脚本之变量</a><ul>
        <li>
          <a href="#241">2.4.1 什么是变量</a>
        </li>
        <li>
          <a href="#242">2.4.2 环境变量(全局变量)</a><ul>
            <li>
              <a href="#2421nbsp">2.4.2.1&nbsp;特点</a>
            </li>
            <li>
              <a href="#2422nbsp">2.4.2.2&nbsp;查看系统中的环境变量</a>
            </li>
          </ul>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#25">2.5 手动创建一个环境变量</a><ul>
        <li>
          <a href="#251">2.5.1 创建一个普通变量</a>
        </li>
        <li>
          <a href="#252">2.5.2 临时创建环境变量</a>
        </li>
        <li>
          <a href="#253">2.5.3 让环境变量永久生效</a><ul>
            <li>
              <a href="#2531nbsp_export_ZNIXclsn_etcprofile">2.5.3.1&nbsp;将 export ZNIX=clsn 放入 /etc/profile</a>
            </li>
            <li>
              <a href="#2532nbsp_source_etcprofile">2.5.3.2&nbsp;让写入的内容生效 ,使用source /etc/profile</a>
            </li>
          </ul>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#26_shell">2.6 shell脚本与变量</a><ul>
        <li>
          <a href="#261">2.6.1 脚本的内容:</a>
        </li>
        <li>
          <a href="#262_shell">2.6.2 shell与普通变量</a>
        </li>
        <li>
          <a href="#263_shell">2.6.3 shell与全局变量</a>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#27">2.7 与用户有关的环境变量配置文件/目录</a><ul>
        <li>
          <a href="#271">2.7.1 全局环境变量配置文件</a>
        </li>
        <li>
          <a href="#272">2.7.2 用户环境变量</a>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#28">2.8 变量命名规则</a><ul>
        <li>
          <a href="#281">2.8.1 取变量的时候将变量用{ } 包起来</a>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#29_shell">2.9 shell中的特殊变量</a><ul>
        <li>
          <a href="#291__0">2.9.1 $数字 与 $0</a>
        </li>
        <li>
          <a href="#292">2.9.2 [练习] 使用变量写一个简单的计算器。</a><ul>
            <li>
              <a href="#2921nbsp">2.9.2.1&nbsp;先写出一个模板。</a>
            </li>
            <li>
              <a href="#2922nbsp">2.9.2.2&nbsp;将期中的内容替换成为变量</a>
            </li>
            <li>
              <a href="#2923nbsp">2.9.2.3&nbsp;将里面的计算方式增加。</a>
            </li>
            <li>
              <a href="#2924nbsp">2.9.2.4&nbsp;执行脚本,进行计算。</a>
            </li>
          </ul>
        </li>
        
        <li>
          <a href="#293_awk">2.9.3 awk的计算方法</a><ul>
            <li>
              <a href="#2931nbspawk_-v">2.9.3.1&nbsp;awk使用 -v 参数 指定变量。</a>
            </li>
            <li>
              <a href="#2932nbspawk">2.9.3.2&nbsp;将awk命令放入脚本中</a>
            </li>
            <li>
              <a href="#2933nbsp">2.9.3.3&nbsp;测试脚本,检查脚本的执行结果。</a>
            </li>
          </ul>
        </li>
      </ul>
    </li>
  </ul>
</li>

<li>
  <a href="#3_vim">第3章 vim 高级使用技巧</a><ul>
    <li>
      <a href="#31_vim">3.1 vim中进行查找替换</a>
    </li>
    <li>
      <a href="#vim">vim命令粘贴带#号或注释信息格式会出现混乱情况解决?</a>
    </li>
    <li>
      <a href="#nbspsedawk">&nbsp;用sed和awk实现将文本中的上下两行合并为一行</a>
    </li>
  </ul>
</li>