linux一行多命令行,linux中如果echo结果有多行,如何取某一行?

2cd6a3a0cb630e61e12a21d60ac52aef.png

这个问题看你的需求,你是要筛选有特定规律的行还是永远只要第二行?

筛选有特定规律的行比较简单,比如说你只想要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

◆◆

评论读取中....

请登录后再发表评论!

◆◆

修改失败,请稍后尝试

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值