day20-20200629
p80.字符截取命令-cut命令
与grep的不同就是,grep是提取行。
cut提取的是列。
【cut [选项] 文件名】
-f 列号 ------提取第几列
-d 分隔符 -----安装指定的分隔符分割列
【cut -d ":" -f 1,3 /etc/passwd】
cut一般都是和grep 配合使用,文本或者命令的输出结果中,得到我们想要的结果。
举例:批量删除用户,或者批量添加用户,如何提取出来所有的用户呢?
查询出登录用户,排除root用户(-v是取反),然后通过cut截取出用户名,通过赋值给变量,循环后删除用户。
cut局限,制表符,或者具体的分隔符,如果是空格作为分隔符,就不可以很好识别。
举例:输出根目录得磁盘空间使用情况,cut作用不到,awk可以。后面有awk得命令使用。
cut可以实现的就用cut,cut不可以完成的就用awk。awk相当于是一个独立的语言,比较复杂。
p81.printf命令
awk中的标准输出格式。
【printf ‘输出类型输出格式’输出内容】
printf不支持直接打印文件名,也部可以用于管道符。没有cat命令使用方便。这个命令只是为了方便awk得里面应用。
print默认会加换行符,但是linux中没有print这个命令,只能在awk中演示。
%ns 输出字符串,输出n个字符
%ni 输出整数,输出n个数字
%m.nf 输出浮点数 ,m总数,n小数
输出格式:
\a 输出警告声音
\b 输出退格键
\f 清除屏幕
\n 换行
\r 回车
\t 水平输出tab键
\v垂直输出tab键
p82.awk命令
printf是awk中用的最多的格式化标准输出命令。
awk是截取列,但也是先读取行,它的作用范围要比cut命令大。
awk比较复杂,还可以使用编程,可以函数等。cut命令比较简单,当cut不可以实现的时候,才使用awk。
【awk ‘条件1{动作1} 条件2{动作2} ...’文件名】
条件,一般使用关系表达式作为条件:
x>10 x>=10 x<=10
动作,标准化输出,流程控制语言。$号 表示第几列。
举例:输出根目录得磁盘空间使用情况,cut作用不到,awk可以。
【BEGIN】是一个条件,先执行这个
【df -h | awk 'BEGIN{print test} '】
【awk '{FS=":"} '】FS内置变量,指定分割符,第一条数据默认为空格分隔,【awk 'BEGIN{FS=":"} '】加上BEGIN就是作用所有的行。
【END】是一个条件,所有数据处理结束后,执行这个命令。
【df -h | grep root | awk 'print $5 ' | cut -d "%" -f 1 | awk '$1>5{print 'chaoguolai!!!'}'】可以用来做磁盘预警!!
cut awk printf 都是字段的截取
sed是一个轻量级的编译器,可以选取、替换、删除、新增。
vi必须先把命令结果写入文件,才可以修改。
sed可以直接接受管道符后的值。
写程序的时候用的比较多,流数据的处理器。平时用的不多。
【sed [选项]'[动作]' 文件名】大部分用来输出
选项:
-n 指定行
-e 多条命令
-i 直接修改文件里面的内容,以及输出结果,这个选项要谨慎使用!!!最好不好使用!!
动作:
a \ : 追加,\数据输入没有完成
c \ : 行替换
i \ : 插入
d : 删除
p : 打印
s : 字串替换
举例:输出第二行的数据,必须加-n ,2p表示第二行。
举例:删除第二第三行数据,加上-i文件内容同时被删除,不加的话只是输出删了。
【sed '2a 内容' 文件名】追加第二行
【sed '2i 内容' 文件名】第二行前插入内容
【sed '2c 内容' 文件名】替换第二行内容
【sed '2s/旧内容/新内容/g' 文件名】替换行字符串内容
【sed -e 's/旧内容/新内容/g : s/旧内容/新内容/g' 文件名】多个替换行字符串内容,不加行直接替换整篇文档。
p84.字符处理命令
【sort [选项] 文件名】行首排序,默认字符排序
-f 忽略大小写
-n 数值排序,默认是字符
-r 反向排序
-t 指定分隔符
-k n[,m] 指定的字段范围排序
【wc [选项] 文件名】统计命令,不加选项的话三个都显示,只显示一个的话,就需要加参数。
-l 行数
-w 单词数
-m 字符数