前言
- grep是在文本当中提取字符串,其实也是一个字符提取命令,除了grep之外,字符截取命令还有这些主要cut、printf、awk、sed,printf是awk当中需要用到的一个命令。跟grep有什么区别那?
- grep的作用是在文件中提取符合条件的行。那谁来提取列那???这个是由cut、awk、sed命令来实现。
1. cut命令
命令: cut [选项] 文件名
选项: -f 列号 提取第几列
-d 分隔符:按照指定分隔符分割列
举个栗子:
- (1)先做一个表格,然后进行实验
但是这个命令在程序中有什么作用那??? cut命令需要跟grep命令结合使用才可以达到效果。
在我的服务器中批量添加了100个普通用户。想提取这些普通用户的用户名,用来批量删除。
- (2)想写一个shell脚本,想把这个100个普通用户删掉。要用脚本实现的话,最主要的目标,提取出来这个用户的名字。所有的系统用户的登录权限(shell)都是/sbin/nologin取反不包含由root的行,只要不含root就列出。
然后把这个命令的结果赋给变量,用循环的方式一个一个删除这个用户即可。cut一般配合grep和管道符来使用。
再举个栗子:
- (1)用脚本来判断这个根分区的使用率,如果这个使用率超过80%。然后报警,告诉管理员你的硬盘快沾满了需要手工清楚。
说明: 这个实验cut没有完成,这个地方就体现出了cut的局限性。请看下面的分析。
2. cut命令的局限
- 命令: df -h | cut -d " " -f 1,3
- 说明: 在使用cut的时候,要么是制表符,要么由具体符号的,比如冒号cut只能解决单个字符分割的,如果以多个空格作为分隔符,这个是时候需要使用更加复杂的命令awk,awk原要比cut复杂。如果cut能够实现的,比如提取的列是用制表符、逗号、冒号分开的,用cut更简单。 但是cut不能完成的切割,比如说空格,这时候在考虑awk。有的时候都不说awk命令都说awk编程。它里面可以实现,流程控制,实现条件判断,变量赋予。这个是编程的独立语言,使用起来会比较难,是和grep配合,提取出来相对应的字串,在程序当中使用
3. 总结
- 使用cut的时候一般与grep配合使用。cut有自己的局限性,如果只是一个分隔符分隔这个还可以处理,但是要是多个空格分开,cut就不能解决了,这时就要使用awk来解决这个问题了。