버전 번호를 추출하는 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]|\.)*
어떤 숫자와도 일치하거나.
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