今天工作中有一个需求,需要分别输出一个文件的奇数行与偶数行内容
想起之前使用过的awk命令可以进行实现,于是记录于此
使用到的主要知识点,在awk中,对于使用未定义的变量,会将其视为假
1、输出奇数行内容,这里以seq命令的输出演示,可以更好的看到效果
[qq-5201351@localhost ~]$ seq 8 | awk 'i=!i' 1 3 5 7 [qq-5201351@localhost ~]$ seq 8 | awk '(i=!i)' 1 3 5 7 [qq-5201351@localhost ~]$ seq 8 | awk '{if(i=!i) print $0}' 1 3 5 7 [qq-5201351@localhost ~]$
2、输出偶数行内容,这里也以seq命令的输出
[qq-5201351@localhost ~]$ seq 8 | awk '!(i=!i)' 2 4 6 8 [qq-5201351@localhost ~]$ seq 8 | awk '{if(!(i=!i)) print $0}' 2 4 6 8 [qq-5201351@localhost ~]$
注:关于最后一条命令中的,awk '{if(!(i=!i)) print $0}',在print前面不要加上分号; 如果加上、则会输出全部的内容
其他方法:我们也还可以使用如下的方式实现(判断行数编号NR的奇偶性,通过求余实现):
单数行:awk 'NR%2!=0'
偶数行:awk 'NR%2==0'
尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/17509260.html
作者:一名卑微的IT民工
出处:https://www.cnblogs.com/5201351
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
由于博主的水平不高,文章没有高度、深度和广度,只是凑字数,不足和错误之处在所难免,希望大家能够批评指出。
博主是利用读书、参考、引用、复制和粘贴等多种方式打造成自己的文章,请原谅博主成为一个卑微的IT民工!