本次我们一起来学习一下有关正则表达式的一些操作命令。
我们知道grep命令可以提取符合条件的行,那么如何提取符合条件的列呢?这时候我们就要用到cut命令。
cut [选项] 文件名
-f列号 | 提取第几列 |
---|---|
-d分隔符 | 按照指定分隔符分割列 |
接下来让我们看下例子,我实现创建好了一个name.txt 这里要说明一下 cut默认分隔符是制表符(tab键空格)
下图是提取第一列的内容
如果想要提取多列,列号和列号之间以逗号分开即可。
我们也可以自己定义分隔符,例如 我想提取/etc/passwd中以冒号为分隔符的第一列内容
结果如下
cut命令并不难,我们一般会将它和grep命令结合使用。
以上是支持的几个输出格式
接下来让我们直接看看printf的用法吧
大家可以试试以上输出,看看会有什么样的效果?
printf是不能打印文件内容的,不信你试试看
如果我们想要打印,该怎么办?
这时候我们就要用到$()命令
并且这个命令的bug在于,输出的内容的是没有格式的,我们是需要手动去调整格式的。
那为什么还要学习这个命令呢?因为awk命令中会涉及到。
接下来就让我们看看awk命令。
我们直接看例子吧
这是事前创建好的文件
我们首先不加任何条件,只是输出第2,3列,注意要加格式符,否则这就是标准输出。
我们之所以要用awk命令,是因为cut无法用在下图这样含有空格键为分割符的命令结构中
如果我们想提取31%,该怎么做呢? 一起来试一试。
希望大家也可以动手试一试。
接下来让我们试试加一些条件
如果我们想在截取内容开头添加一些内容,那么就要用到BEGIN
有BEGIN,也就有END
只不过一个是用在开头,一个是用在结尾。
但是这两个最主要是用来FS内置变量(设置字段分隔符号)
例如 /etc/passwd 文件中是以冒号为分隔符的