数组:
grep:查找文件内容
配合正则表达式
sort:文本内容排序
- sort---选项---文件名
- cat---文件名 | sort 选项
uniq 去重,用于统计或者忽略文件中连续出现的重复行,一般和sort结合使用
- uniq---选项---文件名
- cat---文件名 | uniq---选项
-c:统计连续重复的行的次数,并且合并重复的行
-u:显示仅出现一次的行(包括不连续的重复行)
-d:仅显示重复出现的行(必须是连续的重复行)
tr:用来对标准输入的字符串进行替换,压缩和删除
tr---选项---参数
echo "字符串" | tr 选项
-c:保留字符集1的字符,用其他字符来替换字符集2
-d:删除属于字符集1的字符
-s:将重复出现的字符串压缩成一个,用 字符集2 替换字 符集1
-t:替换字符集,可以不加(默认)
用转译符压缩空格:
↓
cut:截取,对字段进行截取和裁剪
cut---选项---参数
cat---文件名 | cut---选项
- d:指定分隔符(默认分隔符是tab)
- f:指定要截取的字段
- b:以字符的单位进行截取
- c:以字符的单位进行截取
- conmplement:排除指定的字段
- output-delimiter:更改输出内容的分隔符
cut -d '分隔符' -f 1-3 /etc/passwd
文件合并的方法是什么,区别是什么★★★★★
cat 1 2 > 3 -------------- 特点:它是上下合并
paste 1 2 > 3 ----------------- 特点:它是左右合并
文件拆分:有一个日志文件,8G,直接打开速度很慢,有什么办法提高速度?
拆分:
split
- -l:按行分割
- -b:按大小分割
面试题:★★★★★
统计当前主机的连接状态 ★★★★★
统计nginx的访问日志当中多次出现的ip地址:
正则表达式:
按照一定的格式和符号来匹配文件内容(命令输出的结果也属于文件内容的一部分)
通配符:匹配文件名或者目录名
- *:任意一个或多个字符
- ?:任意的单个字符
- [a-z] -----任意单个
- [A-Z] -----任意单个
- [0-9] -----任意单个
正则表达式的格式:
1、基本正则表达式:grep
2、扩展正则表达式:grep -E = egrep
元字符:
- . 匹配任意单个字符,可以是一个汉字
- () 使用转义符,只表示()
- [] 匹配指定范围内的任意单个字符,示例:[dn] [0-9] [] [a-zA-Z] [:alpha:]
- [^] 匹配指定范围外的任意单个字符,示例:[^dn] [^a.z]
- [:alnum:] 字母和数字 [0-9] [a-z] [0-9] [a-z]
- [:alpha:] 代表任何英文大小写字符,亦即 [A-Z], [a-z]
- [:lower:] 小写字母,示例:[[:lower:]],相当于[a-z]
- [:upper:] 大写字母 [A-Z]
- [[:blank:]] 空白字符(空格和制表符)
- [:space:] 包括空格、制表符(水平和垂直)、换行符、回车符等各种类型的空白,比[:blank:]包含的范围广
- [:cntrl:] 不可打印的控制字符(退格、删除、警铃...)
- [:digit:] 十进制数字
- [:xdigit:]十六进制数字
- [:graph:] 可打印的非空白字符
- [:print:] 可打印字符
- [:punct:] 标点符号
- \w #匹配单词构成部分,等价于[_[:alnum:]]
- \W #匹配非单词构成部分,等价于[^_[:alnum:]]
- \S #匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
- \s #匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
表示次数:
*(星号):任意字符,表示匹配前面的任意字符,0次也算,尽可能多的匹配
.*(星号):任意长度的字符,最少要有一次,也就是匹配所有
\ ?:匹配前面的字符0次或者1次
\ +:匹配前面的字符最少得有1次
\ {n }:匹配前面的字符等于多少次
\ {m,n }:匹配前面的字符最多n次,最少m次
{,n }:匹配前面的字符最多是n次,只要比n小都算
{n, }:匹配前面的字符至少n次,只要比n大都算
位置锚定:
以什么开头:^
以什么结尾:$
空行:^$
"^某个词$" :匹配的内容只能有引号中的这一个单词,多的不匹配
词首锚定:\ b + 词
词尾锚定:词+ \ b
分组和逻辑条件:
- 分组:()
↓
或:\ |
扩展正则:
grep -E
sed -r
egrep