这个问题看你的需求,你是要筛选有特定规律的行还是永远只要第二行?
筛选有特定规律的行比较简单,比如说你只想要procs为1的行,那么用以下命令:
echo "" | awk '$1==1 {print}'
管道符“|”前面是你的echo命令,产生的结果用管道送给awk,$1==1做判断第一个字段是否等于1,如果是,就用{print}命令输出该行到标准输出。
举例,输出pid为1的进程详细信息:
ps aux | awk '$2==1 {print}'
当然,如果echo的输出不复杂,用grep也能做。
如果你只想要且永远只要第二行,那么用如下命令:
echo "" | awk 'NR==2 {print}'
同上一个例子,管道符“|”前面是你的echo命令,产生的结果用管道送给awk,awk的内置变量NR表示记录号,默认记录的分隔符是换行符,这里也就是一行一个记录的意思,NR==2做判断当前处理的记录号是否等于2,也就是判断是否是第二行,如果是,就用{print}命令输出该行到标准输出。
举例,输出ps aux结果的第二行:
ps aux | awk 'NR==2 {print}'
当然,一楼用sed做也可以,可惜他没详细解释清楚,我看了半天也没明白echo "1\n2"打印的是什么,估计是随便举例吧,这个表达式没任何意义.
ps.
awk默认的字段分隔符就是空格,如果你在别处还需要使用别的分隔符,比如说筛选/etc/passwd文件特定信息,里面的分隔符是冒号,可以在awk命令后加 -F参数指定分隔符,比如说筛选root账户所使用的shell,用awk命令做就是:
awk -F: '/root/{print $7}' /etc/passwd
参考资料:http://linux.die.net/man/1/awk
◆◆
评论读取中....
请登录后再发表评论!
◆◆
修改失败,请稍后尝试