Para obter o número da versão da pasta do plugin do Wordpress

1

Qual será grep regex para extrair o número da versão como

 Version: 3.1.5
 * Version: 3.1.5

Irá sair 3.1.5

Mas não deve pegar gostos

MIME-Version: 1.0\n

Aqui está o meu comando grep

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

não está funcionando

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

woocommerce é uma pasta. Existe o arquivo woocommerce.php nesta pasta.

Conteúdo de 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

Trabalhando

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

3 respostas

1

Você pode usar:

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

Se você tiver MIME-Version: 1.0 em vez de MIME-Version: 1.0\n :

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

Explicação:

  • -P significa PCRE, -o para obter apenas a parte correspondente da linha

  • (^|\s)+(Version: ) corresponderá a Version no início ou um ou mais espaços em branco, o \K descartará a correspondência

  • ([0-9]|\.)* corresponderá a qualquer dígito ou . zero ou mais vezes, é isso que queremos

  • O token anterior será seguido por qualquer caractere de espaço em branco ou fim da linha

Teste:

$ 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
    
por 07.05.2015 / 12:58
0

você pode usar algo como

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

Isso funcionará

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

Exemplo

Entrada

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

Resultado

3.1.5
3.1.5
    
por 07.05.2015 / 12:51