2016-08-08
授课内容:
处理文本的工具sed
vim编辑器
Shell脚本编程基础介绍
sed:sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),
接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。默认不编辑原文件,仅对模式空间的文件副本进行处理
sed [option] ‘addresscommand‘ file....
-n:静默模式(不输出模式空间内容的自动打印)
-r:支持扩展正则表达式
-i:原文编辑
-e:多点编辑
‘addresscommand‘:
address:
#:第几行
n,m:第n到第m行
n,$:第n行到最后一行
/pattern/:被此处模式所能够匹配到的每一行(正则表达式)
command:
d:删除
p:打印显示
a \text:在行后面追加文本;支持使用\n实现多行追加
i \text:在行前面追加文本,同样支持使用\n实现多行追加
s///:查找替换,支持使用其它分隔符,[email protected]@@,s###
替换标记:
g: 行内全局替换
p: 显示替换成功的行
w /PATH/TO/SOMEFILE:将替换成功的行保存至文件中
vim编辑器:
visual edit improved
vim [OPTION]... FILE...
+:打开文件时定位在最尾一行
+#:打开文件时定位在第#行内
+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首
–d file1 file2… 比较多个文件
vim编辑多个文件
vim FILE1 FILE2 FILE3
:next 切换至下一个文件
:prev 切换至前一个文件
:last 切换至最后一个文件
:first 切换至第一个文件
vim的模式:
命令模式(command mode):打开文件时的默认模式
编辑模式(edit mode):输入i,I,a,A,o,O时进入的文本编辑模式
扩展命令模式(extended command mode):输入:时的模式
命令模式-->编辑模式:
I:在当前光标所在的行首输入
i:在当前光标所在处输入
A:在光标所在行的行尾处
a:在光标后面处输入
O:在光标的上一行开始处
o: 在光标的下一行开始处
插入模式----> 命令模式
ESC
命令模式----> 扩展模式
:
扩展模式----> 命令模式
ESC
关闭文件:
扩展命令模式下
:q 没有更改文件时退出
:wq 保存退出
:q! 强制不保存退出
:wq! 强制保存退出
命令模式:
ZZ:保存退出
ZQ:不保存退出
命令模式下的光标跳转:
字符间跳转:
h: 左l: 右j: 下k: 上
#COMMAND:跳转由#指定的个数的字符;
单词间跳转:
w:下一个单词的词首
e:当前或下一单词的词尾
b:当前或前一个单词的词首
#COMMAND:由#指定一次跳转的单词数
当前页跳转:
H:页首M:页中间行L:页底
行首行尾跳转:
^: 跳转至行首的第一个非空白字符;
0: 跳转至行首
$: 跳转至行尾
行间移动:
#G、扩展模式:# :跳转至由#指定行
G:最后一行
1G, gg: 第一行
句间移动:
):下一句(:上一句
段落间移动:
}:下一段{:上一段
命令模式操作
字符编辑:
x: 删除光标处的字符;
#x: 删除光标处起始的#个字符
xp: 交换光标所在处的字符及其后面字符的位置
~:转换大小写
删除命令:
d: 删除命令,可结合光标跳转字符,实现范围删除;
dd:删除整行
#dd:shanchu#行
d$: 删除到行尾
d^:删除到非空行首
d0:删除到行首
复制命令(y, yank):
y: 复制,行为相似于d命令
yy:复制整行
y$
y0
y^
粘贴命令(p, paste):
p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面
P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面
扩展模式:查找
/PATTERN:从当前光标所在处向文件尾部查找
?PATTERN:从当前光标所在处向文件首部查找
n:与命令同方向
N:与命令反方向
s: 在扩展模式下完成查找替换操作
格式:s/要查找的内容/替换为的内容/修饰符
地址定界:
#: 具体第#行,例如2表示第2行;
#,#: 从左侧#表示行起始,到右侧#表示行结尾
#,+#: 从左侧#表示的行起始,加上右侧#表示的行数
:2,+3 表示2到5行
.: 当前行
$: 最后一行
.,$-1 当前行到倒数第二行
%:全文, 相当于1,$
命令模式:撤消更改
u撤销最近的更改
. 重复前一个操作
使用多个窗口浏览
多文件:
vim -o|-O FILE1 FILE2 ...
-o: 水平分割
-O: 垂直分割
在窗口间切换:Ctrl+w, Arrow
单文件:
Ctrl+w,s: split, 水平分割
Ctrl+w,v: vertical, 垂直分割
ctrl+w,q:取消相邻窗口
ctrl+w,o:取消全部窗口
:wqall退出
shell脚本基础:
shell脚本是包含一些命令或声明,并符合一定格式的文本文件
格式要求:首行shebang机制
#!/bin/bash
创建shell脚本的规范:
shell脚本的开头最好写上作者、日期、描述等基本信息,一方面可以方便别人阅读,另一方面也方便自己回顾
#!/bin/bash #author: #Version: 1.0 #Description:This script displays some information about your environment
创建脚本步骤:
第一步:使用文本编辑器来创建文本文件
第一行必须包括shell声明序列:#!
#!/bin/bash
添加注释
注释以#开头
第二步:运行脚本
给予执行权限,在命令行上指定脚本的绝对或相对路径
直接运行解释器,将脚本作为解释器程序的参数运行
#!/bin/bash #created by: #date:2016-08-09 #ver:1.0 #DES:test script echo `date` echo `cal 08 2016` [[email protected] ~]# sh first.sh Tue Aug 9 09:03:38 CST 2016 August 2016 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31