sehll-字符截取cut/printf/awk

来源:互联网 发布:同花顺手机炒股软件 编辑:程序博客网 时间:2024/05/22 07:55

cut命令和grep命令可以分别提取列和行,结合使用就可以找到特定的位置。


默认的不指定   -d  的时候分隔符是tab,如下:


取多列的时候,用逗号隔开即可,例如:




cut命令用于批量提取删除 (特定的用户) 等,如:


grep命令是处理前面命令的结果。


磁盘利用率达到80%时报警;


cut命令最大的缺点是不能很好的识别空格命令,因为它会从第一个空格开始数,也就是把空格后面的也当成列。

所以,当这个时候可以考虑用awk。


例如:



printf命令

printf在shell中主要是给awk用,因为在awk中不能用echo和cat等。


这个单引号也可以换成双引号。







awk能识别的条件非常多。

下面这个是直接引号,也就是没有任何条件。$2    和     $6    分别代表第二列和第六列。



\t  和   \n     这种格式符号,printf前面一节讲的时候用的单引号,但这里为了跟最外面的单引号区别开,用了双引号。

并且,这个每列之间自动给加了制表符。


这个awk命令其实也是一行一行的读取文件,然后再做处理。

上面那个cut命令解决不了的空格问题,这里用awk解决:


注意这里用的print命令,而不是printf;print命令自带换行功能,但只在wak命令中有,在Linux中没有这个命令。

上面那个报警的命令:




awk是先读入第一行命令,再执行动作,例如下面的问题:(FS是指定分隔符)


这个FS是手动指定的分隔符。


跟BEGIN相反,所有数据处理完后会再处理一条命令,例如:



awk之所以复杂还是因为它支持关系运算符:



grep  -V是取反,

awk命令其实没必要太深究,我们完全可以用shell来执行完其他操作,最后只在提取的时候用它就可以了。







0 0