实验:awk与cut命令进行比较
首先创建2个文件一个脚本文件一个txt文件
touch /tmp/test.sh /tmp/test.txt
创建成功
接下来进行实验
在脚本中随便写点东西用于测试用
执行权限不够
修改权限
修改成功
执行脚本
查看执行脚本后的结果
用cut和awk命令按列去文本进行提取
用cut分别提取第一列第二列
明显提取失败可见对于cut并不认识空格符所以它把这3列作为整体。接下来用awk提取
也是提取前2列
提取成功 可见对于awk把空格符当作分隔符,但是对于cut并不适用。
接下来做关于制表符的实验
重新编辑shell脚本文件
然后执行这个脚本文件去看结果
同样用cut和awk对列进行提取
这次提取成功了也就是说cut认识制表符把制表符当作分隔符去提取了
在用awk去提取
可见awk也认识制表符也是把制表符当作分隔符去分隔
由此可以得出结论:用cut和awk对文本进行列提取的时候我们可以发现
对于cut命令进行列提取的时候把制表符当作分隔符
对于awk命令是把空格和制表符当作分隔符。无论空格是多个空格还是一个空格。
上面对于空格的实验只设置了一个空格,对于多个空格也是一样的。接下来做一个多个空格的实验
来一个又有制表符又又空格并且空格不规则的输出
向脚本追加不规则空格
执行脚本输出结果
再用awk和cut去查看内容
cut命令输出的结果和预期的一样上面3行都是用制表符分隔提取出来第一列下面3行字母彼此之前都是一个或者多个空格所以输出所有。接下来用awk命令在尝试一样
输出第一行和第三行都是符合对应要求的。通过和test.txt整个文本的内容对比,对于之前的结论也就解释的通了。总结下来awk比cut在对列提取的时候awk功能更强大,但是cut语法比awk简单,相对来说。所以看自己选择需要。