如何在Linux BASH中获得命令输出的一部分?

正如标题所说,我如何获得Bash命令输出的一部分?

例如,命令php -v输出:

PHP 5.3.28 (cli) (built: Jun 23 2014 16:25:09) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies with the ionCube PHP Loader v4.6.1, Copyright (c) 2002-2014, by ionCube Ltd.

我只想输出PHP 5.3.28 (cli)部分,我该怎么做?

我试过php -v | grep 'PHP 5.3.28' php -v | grep 'PHP 5.3.28'但输出: PHP 5.3.28 (cli) (built: Jun 23 2014 16:25:09) ,这不是我想要的。


你可以尝试下面的awk命令,

$ php -v | awk 'NR==1{print $1,$2,$3}'
PHP 5.3.28 (cli)

它从第一行输入中打印前三列。

  • NR==1 (条件),即仅当NR变量的值为1时才执行{}内的语句。
  • {print $1,$2,$3}列印col1,col2,col3。 ,在打印语句中表示OFS(输出字段选择器)

  • 在纯粹的bash中你可以做到

    echo 'PHP 5.3.28 (cli) (built: Jun 23 2014 16:25:09)' | cut -d '(' -f 1,2
    

    日期:

    PHP 5.3.28 (cli)
    

    或者使用空格作为分隔符

    echo 'PHP 5.3.28 (cli) (built: Jun 23 2014 16:25:09)' | cut -d ' ' -f 1,2,3
    

    如果你想要所有包含“php”的行都这样做:

     $ php -v | grep -i "php"
    

    那么假设你想要那些可以添加另一个管道的前三个单词作为@Avinash的建议:

    $ php -v | grep -i "php" | awk 'NR==1{print $1,$2,$3}'
    
    链接地址: http://www.djcxy.com/p/9815.html

    上一篇: How do I get a part of the output of a command in Linux BASH?

    下一篇: script: /bin/bash^M: bad interpreter: No such file or directory