文本处理工具
grep 对文本进行搜索
获取我们想要的行(关键信息)
egrep 支持扩展正则表达式的grep
fgrep 快速搜索
不支持正则
-v 取反 找出不包含“pattern”的行
-i 忽略字符的大小写
-n 显示行号
-c 显示统计到的行数,等同于wc -l
-o 仅显示匹配到的字符串
-q 静默输出 只关心命令的执行结果 不关心输出结果
-A 后几行
-B 前几行
-C 前后几行 查看日志 搜索关键字排查错误的时候
-e 指定多个条件,条件是或的关系
-w 匹配整个单词
-E
=== egrep 支持扩展的正则表达式
-F
=== fgrep 不支持正则表达式
例子如下:
grep 正则表达式
. 单个字符
[abc] a | b | c
[^abc] 除abc之外的字符
[:alnum:] 数字和字符
[:alpha:] 英文大小写字符 a-z A-Z
[:lower:] 小写字母
[:upper:] 大写字母
[:space:] 专门匹配空格
* 匹配前面的字符任意次,0 到无穷
.* 任意字符出现任意次,比如说 123 456 abc
a* a字符出现任意次 aaaa aa
[[:lower:]]* 任意小写字母出现任意次
\? 匹配前面的字符出现0次或者1次
a\? 出现0次或者1次
\+ 匹配前面的字符至少1次
a\+ a至少出现1次
\{n\} 前面的字符出现n次
[0-9]\{3\} 000-999
\{m,n\}匹配前面的字符出现m到n次,m,n是一个范围
[0-9]\{1,3\} 0-999
\{,n\}匹配前面的字符最多出现n
[0-9]\{,3\} 最大匹配是999
\{m,\}匹配前的字符至少出现m次
[0-9]\{3,\} 000 无穷
位置锚定 用来定位字符出现的位置
^ 锚定行首
$ 锚定行尾
^$ 匹配空行的
^[[:space:]] 行首是空白的字符
^[[:space:]]*$ 也是 空行
^a 以a开头的行
b$ 以b结束的行
^a.*b$ 以a开头 中间任意字符 以b结尾的行
^a.*[[:space:]]\{3\}.*b$ a开头跟任意字符,中间出现三次空格再跟任意字符
以b结尾的行
^# 以#开头的行
cat /etc/profile | grep -v “^#” | grep -v “^$”
cat /etc/httpd/conf/httpd.conf |
grep -v “^#” | grep -v “^$”
\b \b 匹配词首和词尾
\<
\> 匹配词首和词尾
\broot\b
\<root\>
vim编辑器
三种模式 打开之后默认是一般模式 | 命令模式
插入模式 | 编辑模式
末行模式 | 扩展模式(extend )| 命令行模式
一般模式 i 编辑模式
i I a A o O 用的比较多的是 i o O
编辑模式 esc 一般模式
一般模式 : 末行模式
: ? / 其中: / 用的比较多的
末行模式 q 结束
:q 退出
:q! 强制退出,不保存修改的内容
:wq 保存退出
:x 保存退出
一般模式下 ZZ ZQ
上下左右键移动
10 –>
10 <–
10 向下
10 向上
w 单词间跳转
10w 向下跳10个单词
H 页首
M 页中间
L 页底
行首行尾
^ 跳至行首 非空白字符
$ 跳至行尾
0 跳到行首
G 最后一行
gg 第一行 1G
句子之间移动 (上 )下
段落之间移动 {上 } 向下移动
Ctrl+d: 向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
字符的删除
x 删除字符
10x 删除10个字符
替换模式
r 替换当前字符
R 进入替换模式,替换完之后按esc键退出
dd 删除光标所在当前行
10dd 删除10行
删除半行
d$ 删除光标处到行尾
d^ d0删除光标处到行首
dw de 删除一个单词
x 多按几次
d1G删除光标到第一行的数据
dG 删除光标到最后一行的数据
二者结合可以删除整个文件里面的内容
删除文件全部内容 先跳到最后一行 G
然后执行d1G
复制粘贴
yy —> p
y$ 复制光标处到行尾的
y0 y^ 复制光标到行首的 注意空白字符和非空白字符的区别
ye yw 复制单个字符
粘贴
p 粘贴到当前行的下一行
P 粘贴到当前行的上面一行
c 相当于执行了x然后再执行i 进入编辑操作
c$ 删除光标处到行尾的内容 然后进入编辑模式
c^ c0 删除光标处到行首的内容,删完进入编辑模式
cb ce cw 删除一个单词之后进入编辑模式
cc 删除一行之后直接进入编辑模式
文件查找和压缩
find:根据我们指定的内容或者条件在系统上进行实时查找
最新 最快 最精确
使用场景 我想查找某个文件名叫 server.xml 在/apps/data/目录下
我想查找某个目录下文件大小超过10G的日志
find .
-name “baoding.log”
-print
查找路径 查找条件 找到之后执行的动作
find . -name “baoding.log” 默认动作 标准输出,输出到当前屏幕上
查找条件
-name 可以使用通配符 比如 * ? [] [^]
find . -name “????.log”
-iname 文件名称忽略大小写
find
. -iname “baoding.log”
-inum n 根据inode来查找 (基本不用)
find . -inum 1179826
-samefile name 查找相同inode号的文件,其实等于查找硬链接(基本不用)
-links n 根据链接数
find . -links 2
-regex 使用正则表达式的方法匹配文件名
find /etc/ -regex “.*\.sh$”
根据属主和属组来查找
-user
-group -uid -gid
-nouser 查找没有属主的文件或者目录
-nogroup 查找没有属组的文件或者目录
测试方法:新建一个ash用户,然后把一个文件的属主和属组改成ash
然后再删除ash用户
根据文件类型:
-type f 普通文件
d 目录
l 链接文件
s 套接字文件
b 块设备
c 字符设备
p 管道
根据文件大小来查找
-size + 大于多少的文件
k M G
-size – 小于多少的文件
k M G
-size 等于多少的文件
k M G
根据时间来查找
-mtime +7 7天以前的 从第8天开始
-mtime 7 当前时间往前推第7天
-mtime -7 当前时间往前推第7天以内
——10–9–8 7——5—3–2—1
mtime +7 | mtime 7|
mtime -7 |
以分钟为单位 -amin -cmin(少用)
-mmin +7 -7 7
根据权限来查找(基本不用的)
-perm 755 精确匹配有755权限的文件
-perm -222 必须包含全部的222权限才可以
-perm +222(CentOS 6)
/222(CentOS 7)
只要有一个比如说属主 属组或者其他人有一个拥有写权限即可
几种压缩工具的用法
compress
compress file 会生产file.Z压缩文件,同时会删除源文件
compree -c file > file.Z 将压缩结果输出到标准屏幕上,可以一个(压缩)文件,从而达到生产压缩文件
同时保留源文件
compress -d
解压缩 .Z格式结尾的压缩文件
=== uncompress
zcat file.Z 直接查看压缩文件的内容不用先解压缩
gzip 压缩比1–9 默认是6 压缩比越高 耗费CPU资源也多
文件比较小的话,使用gzip越压缩越大
nginx gzip on
gzip_min_length 1k; 超过多大的文件(1K)才会压缩
-d 解压缩 == gunzip
-c 将压缩或者解压缩结果输出到屏幕
bzip2
-k 保留源文件
-d 解压缩 == bunzip2
-# 指定压缩比
bzcat file
xz 要取代gzip
bzip2的命令 压缩的更彻底
-k 保留源文件
-d 执行解压缩
-# 指定压缩比
xzcat 直接查看压缩文件内容
zip 打包压缩(可以压缩目录)
-r 递归压缩
unzip 解压缩
-p 将压缩结果输出屏幕上
tar 打包工具,将多个目录打包成一个文件
-c 打包 创建打包文件(归档)
-f 指定打包的文件名
-f filename 必须放在一起
-r 将文件追加至归档文件中
-t 不解压的情况下直接查看归档文件里面的内容
常用选项:-cf -rf -tf
-x 执行解压缩
通常和-v(显示解压缩过程) -f结合使用
-C 解压到指定目录
shell脚本的编程
Shell脚本
过程式 解释语言
组成:
变量
命令
控制语句(if,for,while)
首行的固定写法:
#!/bin/bash
#!/bin/sh
告诉系统执行的时候要调用什么解释器。
如果首行不写,执行的时候需要使用命令bash
shell脚本的写法:
注释说明:
#!/bin/bash
#
#Filename:BeiFen.sh
#Description:Test
#Author:Li Nan
#Email:xxx@126.com
#Revision:3.1
#Date:20170407
#Note:Test
每一行之前最好有一个注释
脚本名称使用.sh结尾的
尽量避免使用中文
# 表示注释 此行不执行
脚本的执行:
1 bash
2 sh
3 加执行权限
1)相对路径
2)绝对路径
3)放到$PATH变量指定的目录里面,直接执行(tab)
脚本调试执行:
bash -n 检查语法错误,不检查拼写错误
bash -x 显示脚本执行的时候每一个命令具体的执行结果
bash变量的种类
本地变量(全局变量) 仅仅对当前shell生效
环境变量 对当前shell以及其他shell都生效 export
局部变量(私有变量) 通常用在函数里面,使用local
例子如下:
原创文章,作者:yaobinbin,如若转载,请注明出处:http://www.178linux.com/73027
评论列表(1条)
主要介绍了vim、 find命令、grep命令的用法及正则表达式方面的内容,内容总结的很详细,要稍微注意一下排版,继续努力!