根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。 如果您需要获取输入文件中奇数行或偶数行的数据,或者每隔一行获取一次数据,那么对于awk而言,只需一条简单的语句即可完成,真是太神奇了! CodingAnts@ubuntu:~$ seq 10 | awk 'i=!i'
1
3
5
7
9
为方便起见,用seq命令模拟了10行数据,内容为1到10,可以看到上面的结果显示了所有的奇数行. 让我们为所有人阅读这个awk指令. 在“ awk程序指令模型”中awk 输出,介绍了awk程序指令由模式和操作组成,即以模式{Action}的形式. 比较上面的说明,发现只有模式而没有动作,因此这种情况使用默认动作,即输出整个记录(相当于打印$ 0的效果). 在分析此模式之前,我们需要介绍如何处理awk中的未定义变量. 在awk中对未定义变量的处理如下: 1. 如果执行数字运算,则会分配初始值0 2. 如果字符正在运行,则初始值将为空字符串 了解awk如何处理未定义的变量后,分析模式要容易得多. 当awk读取第一行数据时,它将与模式(模式)匹配. 在这里,模式是一个赋值语句: i =!i 读取第一条数据后,执行模式匹配时,i是未定义的变量. 根据awk处理未定义变量的方式,这是i的值是0,然后!i是!0 ,!是逆数,并且0为false,然后!0为trueawk 输出,因此赋值语句的结果为i =!0,即为i赋值1. 经过上述计算,Pattern可以等于1,并且1为true,Pattern匹配成功,并输出当前记录. 当读取第二条记录时,i = 1,i =!i,结果为i = 0,因此Pattern为0,Pattern匹配失败,然后读取内容以循环进行上述过程,因此输出的目的达到奇数行. 为了更清楚地理解上述内容,您可以尝试自己运行以下命令并观察输出: CodingAnts@ubuntu:~$ seq 10 | awk '{i=!i;print i}' 1 0 1 0 1 0 1 0 1 0 CodingAnts@ubuntu:~$ seq 10 | awk '1' 1 2 3 4 5 6 7 8 9 10 CodingAnts@ubuntu:~$ seq 10 | awk '0' 离开工作: 如何使用awk仅输出偶数行?
|
温馨提示:喜欢本站的话,请收藏一下本站!