获取线的特定部分

时间:2017-09-20 08:14:10

标签: bash awk

我试图获取特定程序的版本号:

add_filter( 'wpcf7_form_elements', 'imp_wpcf7_form_elements' );
function imp_wpcf7_form_elements( $content ) {
    $str_pos = strpos( $content, 'name="inique-name"' );
    $content = substr_replace( $content, ' data-attr="custom" data-msg="Текст 1" ', $str_pos, 0 );
    return $content;
}

输出:

TEST="$(program --version)"
echo "${TEST}"

我想找到包含'版本'的行。然后将以下版本号(2.2.6)存储到变量中。在过去,我做过类似的事情:

/pathway/to/program version 2.2.6
64-bit
Built on anitra.peabody.jhu.edu
Wed Jul 22 13:40:50 EDT 2015
Compiler: Thread model: posix
Options: -O3 -m64 -msse2  -funroll-loops -g3 -DPOPCNT_CAPABILITY
Sizeof {int, long, long long, void*, size_t, off_t}: {4, 8, 8, 8, 8, 8}

在输入文件中查找特定行时。

但我不确定当行首先加载到变量中时该怎么做。

3 个答案:

答案 0 :(得分:2)

Example=$(awk '/version/ {print $NF}' <<< "$TEST")

$NF是一行的最后一列。

变量内容示例:

2.2.6

答案 1 :(得分:1)

使用grep

echo "$TEST"|grep -oP 'version\s\K[^ ]+'
2.2.6

答案 2 :(得分:1)

echo $ TEST | grep -i version | awk'{print $ NF}'