命令 : grep
功能 : 通过正则表达式查找文件中的关键字
参数 :
-i: 忽略大小写
-c: 打印匹配的行数
-C: 打印出匹配的上下文 ( 上 N 行 , 下 N 行 ) 的多少行
-l: 列出匹配的文件名
-L: 列出不匹配的文件名
-n :打印包含匹配项的行和行标
参数 :
-w: 仅匹配指定的单词而非关键字
-e: 索引匹配字串
-r: 递归查询
-v: 不输出匹配的行
-A < 行号 >: 显示所找的匹配字段,并显示下面指定的行
数的信息
-B < 行号 >: 显示所找的匹配字段,并显示上面指定的行
数的信息
示例 :
1. 递归且不区分大小写对 test 字段查找
#grep -ri “test” ./
2. 打印匹配” test” 关键字有多少行
#grep -c “test” grepcmd.txt
3. 打印匹配” test” 关键字的上下文各 1 行
#grep -C 1“test” grepcmd.txt
4. 打印匹配 test 关键的行并显示行号
#grep -n “test” grepcmd.txt
查找开头为” #” 的行,并显示行号
#grep -n ^# grepcmd.txt
2. 查找在本地目录下 ( 含子目录 ) 结尾为” c” 的文件
#grep -r c$ ./
3. 查找以” man” 开头的单词
#grep '\<man'* grepcmd.txt
4. 查找” man” 仅匹配此三个字符
#grep '\<man\>' grepcmd.txt
5. 查找含有以” D” 字符开头的行
#grep -n ^[D] grepcmd.txt
6. 查找含有以” A-F” 字符开头的行
#grep -r “^[A-F]” ./
7. 查找含有以” A-F” 字符开头 , 第 2 个字符为 i 的行
#grep “^[A-F]i” grepcmd.txt
8. 查找含有以 'nobody' 字符的行及下面 3 行信息
#grep -A 3 'nobody' /etc/passwd
9. 查找含有以 'nobody' 字符的行及上面 3 行信息
#grep -B 3 'nobody' /etc/passwd
命令 : egrep
信息 : grep 的增强版 / 扩充版 ( 即 grep -E) 特点 : 1. 支持 ? 匹配 , 即匹配 0 到 1 个正则表达式 2. 支持 + 匹配 , 即匹配 1 到 N 个正则表达式 3. 支持”或关系”的匹配 4. 在查找范围时,可直接用 {a,z}, 而不需要” \” 符号 5. 可以被 () 来包含正则表达式进行分组 6. 参数与 grep 基本通用
正则表达式
\ 忽略正则表达式中特殊字符的原有含义 ^ 匹配正则表达式的开始行 $ 匹配正则表达式的结束行 \< 从匹配正则表达式的行开始 \> 到匹配正则表达式的行结束 [ ] 单个字符;如 [A] 即 A 符合要求 [ n - m ] 范围 ;如 [A-H] 即包含 A 至 H 都符合要求 . 所有的单个字符 * 所有字符,长度可以为 0
命令 : cut
功能 : 对所需字符进行截取
-d “n”: 定义分界符 , 即点位 -f n: 取第几位的字符
1. 以空格符为分界符 , 进行第 2 位截取 .
#cut -d “ “ -f 2 ./cutcmd.txt
2. 以空格符为分界符 , 进行第 1,3 位截取 .
#cut -d “ “ -f 1,3 ./cutcmd.txt
命令 :sed
功能 : 通过指定的正则表达式完成指定关键字的过滤、截
取、修改等操作
语法格式 :
sed ‘command’ filename(s)
sed可以在不打开文件的情况下修改文件内容 , 但是在不用重定向至文件之前,是不会改变文件现有内容。
以避免修改文件时出现问题 , 如果需要改变文件生效使用 sed -i ‘command’ filename(s)
1.sed 通过定址 ( 指定行或者关键字等 ) 来判断哪一行
是用户所希望编辑的字段。
2. 定址可以通过数字、正则表达式或者二者相结合的
方式来进行
3. 如果没有定址,则 sed 将处理输入文件的所有行
sed 之动作命令
r file 从 file 中读取行
g 获得内存缓冲区内容
n 从 file 中读取行
-e command 允许多点编辑
w 把行写入一个文件
-i (使操作生效)
命令 :awk
功能 : 通过正则表达式 , 得到需要的行 , 列信息
查看 df -h 命令的第 2 列
#df -h | awk '{print $2}'
print代表列
显示 install.log 的第四行 $awk 'NR==4' install.log
NR代表行
如果在行或者列前边加字符 格式 :#df -h | awk '{print “此处是字符” $2 “此处是后面的字符”}'
- 在有 noarch 字段的行前增加记录号 ($0 为行头前 ) $awk ‘/noarch/{print NR, $0}’ install.log
命令 :sort
功能 : 默认以排序 ASCII 方式进行排序 [a-z]
-u 去除重复的行 -r 降序排序 [z-a] -n 数值排序 , 默认情况 10 比 2 小 , 主要因为 sort 判断第一字符的值 -k 以文本的列进行判断 -t 设定分界符
示例 :
- 对 /etc/passwd 文件进行升序排序 #sort /etc/passwd
- 对 /etc/passwd 文件进行降序排序 #sort -r /etc/passwd
- 对 /etc/passwd 第 3 列进行数值排序 , 分界符为 : #sort -n -k 3 -t : /etc/passwd
命令 :wc
功能 : 统计行数、字数、字符数、文件总统计数
1. 统计 /etc/passwd 文件行数 #wc -l /etc/passwd 2. 统计 /etc/passwd 文件的字数 #wc -w /etc/passwd 3. 统计 /etc/passwd 文件的字节数 #wc -c /etc/passwd 4. 统计 /etc/passwd 文件行数和字节数 #wc -lc /etc/passwd 5. 统计 /etc/passwd 与 /etc/fstab 各文件的行、字、字节数 #wc -lwc /etc/passwd /etc/fstab
命令 : xargs
功能 : 给命令传递参数的一个过滤器,也是组合多个命令的一个工具
- 让不支持管道的命令实现管道支持
#find / -type f | xargs file