バージョン番号を抽出する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
先頭または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