从 WordPress 插件文件夹中 grep 版本号

从 WordPress 插件文件夹中 grep 版本号

什么是 grep 正则表达式来提取版本号

 Version: 3.1.5
 * Version: 3.1.5

会输出 3.1.5

但它不应该吸引喜欢

MIME-Version: 1.0\n

这是我的 grep 命令

grep -ri 'version\s*:\s*[0-9\.]\w*' /home/test/public_html/wp-content/plugins/plugin_name 

不工作

grep -Po "(^|\s)+(Version: )\K([0-9]|\.)*(?=\s|$)" /home/test/public_html/wp-content/plugins/woocommerce/

woocommerce是一个文件夹。woocommerce.php该文件夹下有文件。

内容woocommerce.php

 * Plugin Name: WooCommerce
 * Plugin URI: http://www.woothemes.com/woocommerce/
 * Description: An e-commerce toolkit that helps you sell anything. Beautifully.
 * Version: 2.3.8
 * Author: WooThemes
 * Author URI: http://woothemes.com
 * Requires at least: 4.0
 * Tested up to: 4.2

在职的

grep -rPo "(^|\s|^\*)+(Version\s*:\s*)\K([0-9]|\.)*(?=\s|$)" /home/test/public_html/wp-content/plugins/attachments/

答案1

您可以使用:

grep -Po "(?<=Version: )([0-9]|\.)*(?=\s|$)"

如果你有MIME-Version: 1.0而不是MIME-Version: 1.0\n

grep -Po "(^|\s)+(Version: )\K([0-9]|\.)*(?=\s|$)"

解释 :

  • -P代表 PCRE,-o仅获取该行的匹配部分

  • (^|\s)+(Version: )Version在开头或一个或多个空格处匹配,然后\K将丢弃匹配

  • ([0-9]|\.)*将匹配任何数字或.零次或多次,这就是我们想要的

  • 前一个标记后面将跟有任何空白字符或行尾

测试:

$ cat file.txt 
 Version: 3.1.5
 * Version: 3.1.5
MIME-Version: 1.0\n

$ grep -Po "(?<=Version: )([0-9]|\.)*(?=\s|$)" file.txt 
3.1.5
3.1.5



$ cat file.txt 
Version: 3.1.5
 * Version: 3.1.5
MIME-Version: 1.0

$ grep -Po "(^|\s)+(Version: )\K([0-9]|\.)*(?=\s|$)" file.txt 
3.1.5
3.1.5

答案2

你可以使用类似的东西

grep -w Version: /home/test/public_html/wp-content/plugins/plugin_name |grep -v -- -Version|awk '{print $NF}'

答案3

这会起作用

awk '/[^[:graph:]]Version/{print $NF}' file

例子

输入

 Version: 3.1.5
 * Version: 3.1.5
MIME-Version: 1.0
J_Version: 7.25
A.Version: 50

输出

3.1.5
3.1.5

相关内容