sed命令详解 vim高级技巧 shell编程上
第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>
</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 单引号: 所见即所得</a>
</li>
<li>
<a href="#132_nbsp">1.3.2 双引号: 对特殊符号进行解析</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 示例一:</a>
</li>
<li>
<a href="#1572nbsp">1.5.7.2 示例二</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的作用: </a>
</li>
</ul>
</li>
<li>
<a href="#22">2.2 如何查看当前用户的命令解释器</a><ul>
<li>
<ul>
<li>
<a href="#2211nbspshell_sh">2.2.1.1 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 特点</a>
</li>
<li>
<a href="#2422nbsp">2.4.2.2 查看系统中的环境变量</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 将 export ZNIX=clsn 放入 /etc/profile</a>
</li>
<li>
<a href="#2532nbsp_source_etcprofile">2.5.3.2 让写入的内容生效 ,使用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 先写出一个模板。</a>
</li>
<li>
<a href="#2922nbsp">2.9.2.2 将期中的内容替换成为变量</a>
</li>
<li>
<a href="#2923nbsp">2.9.2.3 将里面的计算方式增加。</a>
</li>
<li>
<a href="#2924nbsp">2.9.2.4 执行脚本,进行计算。</a>
</li>
</ul>
</li>
<li>
<a href="#293_awk">2.9.3 awk的计算方法</a><ul>
<li>
<a href="#2931nbspawk_-v">2.9.3.1 awk使用 -v 参数 指定变量。</a>
</li>
<li>
<a href="#2932nbspawk">2.9.3.2 将awk命令放入脚本中</a>
</li>
<li>
<a href="#2933nbsp">2.9.3.3 测试脚本,检查脚本的执行结果。</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"> 用sed和awk实现将文本中的上下两行合并为一行</a>
</li>
</ul>
</li>
- 原文作者:惨绿少年
- 原文链接:https://clsn.io/clsn/lx657.html
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。