awk与cut命令进行比较(就awk与cut按列提取文本内容方面进行比较)

实验: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简单,相对来说。所以看自己选择需要。

发布了4 篇原创文章 · 获赞 1 · 访问量 75

猜你喜欢

转载自blog.csdn.net/qq_47103654/article/details/105580905
今日推荐