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|$)"

説明する:

  • -PPCREを表し、-o行の一致する部分のみを取得します。

  • (^|\s)+(Version: )Version先頭または1つ以上のスペースで一致すると、一致\Kは削除されます。

  • ([0-9]|\.)*任意の数字に一致するか、.0回以上一致します。それが私たちが望むものです。

  • 前のトークンの後には空白文字または行末が続きます。

テスト:

$ 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

関連情報