使用grep从文件中提取插件名称

时间:2016-06-13 08:55:20

标签: macos terminal grep

在shell脚本中,我使用以下行获取WordPress插件文件的版本:

VERSION=`grep "^Version" $PLUGIN | awk -F' ' '{print $2}' | tr -d '\r'`

$VERSION包含文件中的版本号(例如 2.1

当我试图获得名称时,问题似乎是空格字符:

PLUGINNAME=`grep "^Plugin Name" $PLUGIN | awk -F' ' '{print $2}' | tr -d '\r'`

$PLUGINNAME包含Name:但不包含插件。

$PLUGIN是插件文件的位置,例如my-plugin/index.php

以下是此文件的内容(已删除):

<?php
/*
Plugin Name: My Plugin Name
Plugin URI: http://example.com
Description: the description of the plugin
Version: 2.1
Author: revaxarts.com
Author URI: http://example.com
*/

// -- stripped -- //

1 个答案:

答案 0 :(得分:3)

您可以使用grep的后视:

$ grep -Po '(?<=^Version: ).*' your_file.php
2.1
$ grep -Po '(?<=^Plugin Name: ).*' your_file.php
My Plugin Name

这会查找Version:Plugin Name:之后的所有文字,当这些字符串出现在一行的开头时。

由于这使用了-P用于Perl正则表达式(在OS X中不可用),让我们去awk

awk -F": " '/^Plugin Name:/ {print $2}' file

这会获得以Plugin Name:开头的行并打印第二个字段,将字段视为: - 分隔(:加空格)。

要将值存储在变量中,只需使用var=$(command)语法:

plugin_name=$(awk -F": " '/^Plugin Name:/ {print $2}' file)