目录
1.sed命令--编辑、过滤文本,非交互式,方便再脚本中使用
linux文本三剑客:grep(文本过滤)、文本截取(awk)、sed(文本替换)
1.sed命令--编辑、过滤文本,非交互式,方便再脚本中使用
sed的常用命令选项:
-n:只显示匹配处理的行(否则会输出所有)
-e:执行多个编辑命令时(一般用;代替)
-i:直接在文件中进行修改,而不输出到屏幕
-r:支持扩展正则表达式
-f:从脚本文件中读取内容并执行(文件中的编辑命令每行一个,不用;隔开)
sed的常用编辑命令:
p:打印匹配行 print
sed -n ‘/模式/p’ 输入文件 这里的模式可以是正则表达式也可以是精确字符\
d:删除指定行 delete
a:在匹配行后面追加 append
i:在匹配行前面插入 insert
c:整行替换
r:将文件的内容读入 read
w:将文本写入文件 write
s:字符串替换(匹配正则表达式)substitution
= :输出行号
n: 用新的命令去处理下一行
2.awk命令,对文本、数据进行过滤、统计、截取处理
常用的命令选项:
-F 指定分隔符 ,默认空白符
-v var=value 将外部变量传递给awk
-f scripfile 从脚本文件中读取awk命令
2.1 awk命令脚本基本结构体
由三大块组成: 'BEGIN{语句块} /模式/{动作} END{ 语句块}' ,BEGIN、模式通用语句块、END都是可选模块,可以不写。
BEGIN模块:在文本处理之前执行,并且只会执行一次。用于定义一些变量和输出一些内容
通用语句模块:读取文本的每一行交给这个语句块。
END模块:在读取完所有的行之后执行,统计、分析结果这些信息在END之中完成,只会执行一次。
2.2 用正则表达式进行匹配
2.3 关系表达式、运算符表达式
2.4 模式匹配表达式
2.5 awk 命令内部变量
NF:每行的字段数
NR:当前处理的行号
FS:指定当前的分隔符,默认是空格字符,相当于-F
OFS:指定当前输出的分隔符,默认是空格字符。
2.6awk命令的流程控制
统计每个班每个科目的平均分
3.grep命令-根据某个规则查找文本
grep的三兄弟
命令 | 是否支持正则 | 支持的正则类型 |
grep | 支持 | 基本正则表达式 |
egrep | 支持 | 拓展正则表达式 |
fgrep | 不支持 |
常用的命令选项:
-a :不要忽略二进制数据
-A :显示该行以及之后的行after
-B :显示改行以前的几行before
-c :计算符合样式的列数
-C:除显示符合的行之外,还要显示之前和之后的行
-d :如果要查找的是目录而不是文件时,必须指定这个参数
-E:将样式作为延申的普通标准来使用,grep -E=egrep
基本正则: ^ $ . [ ]
拓展正则:( ) { } ? + |
-F :将样式是为固定字符串的列表 grep -F = fgrep
(fgrep的用途:因为他不支持正则,所以当我们搜索的字符换内包含了很多特殊字符,而这些特殊字符恰好是正则表达式的预留字符时,我们就可以使用fgrep来避免繁琐的转义了)、
-f :指定规则文件,其内容含有一个或者多个样式,让grep查找符合体哦阿健的文件内容
-i :忽略大小写
-n :显示符合条件的行之前显示行号
-o :只显示符合匹配条件的那一部分
-v :显示不包含匹配文本的所有行
-l :列出文件中符合指定的样式的文件名称
例: 输出12 135 126 110 99 89 8 192中小于126的数
例:12.1.1.2 174.23.34.56 121.100.9.8 192.168.99.1
4.sort命令
以行为单位,每行作为一个字符串
按照字符串的比较规则,首字母开始一次向后按照ascii码值进行比较
结果默认升序输出
常用命令选项:
-b :忽略每行前面开始的空格字符
-c :检查文件是都按照顺序排序
-d :排序时,处理英文字母、数字及空格字符外,忽略其他的字符
-f :排序时,将小写字母视为大写字母
-m :讲几个排序好的文件进行合并
-n :按照数值的大小进行排序
-u :输出的结果去重
-o :将排序后的结果存入指定的文件
-r :以相反的顺序来排序
-k :指定列进行排序
输出scwebsite.log文件中 ip访问量的前5名
5.uniq命令
uniq命令用于检查及删除文本中重复出现的行或列,一般与sort命令结合使用
-c :在每列旁边显示该行重复出现的次数
-d :仅显示重复出现的行列
-f :忽略比较指定的栏位
-u :仅显示出现一次的行列
-w :指定要比较的字符
6.wc命令
计算文件的byte数、字数或者是列数
-c :只显示byte数
-l :显示行数
-w :只显示字数