开发者社区> 问答> 正文

linux shell 编程 grep "/$" awk '{print +$5}'

显示系统根目录的磁盘利用率,不显示百分号。( awk,sed )

[root@localhost ~]# df -h | grep "/$" | awk ' {print $5}' | sed 's/%//'

36

[root@localhost ~]# df -h | grep "/$" | awk ' {print +$5}'

36

我想问下,标红的地方: grep "/$" 表示啥意思?虽然我知道答案。

还有另外一个地方 awk '{print $5}' 和 awk '{print +$5}' 多了一个+

其结果就完全不一样了,那这个+是啥意思呢?

展开
收起
a123456678 2016-06-14 15:35:49 3405 0
1 条回答
写回答
取消 提交回答
  • grep "/$" 表示最后一个字符是“/”的行

    print +$5 这里应该是一元加的用法。

    手册上提到:

    • x Unary plus. The expression is converted to a number.

    表达式会转化为数值。简单测试:

    $ echo "a" |awk '{print $1,+$1,-$1,2+$1}'
    a 0 0 2
    $ echo "1a" |awk '{print $1,+$1,-$1,2+$1}'
    1a 1 -1 3
    $ echo "a1" |awk '{print $1,+$1,-$1,2+$1}'
    a1 0 0 2
    $ echo "1a1" |awk '{print $1,+$1,-$1,2+$1}'
    1a1 1 -1 3

    看起来是字符串中从第一个非数值字符开始都去掉了...

    这样的话这种用法倒是可以用在某些字符串处理的场景上

    2019-07-17 19:37:53
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载