提取字符之间的数字 - grep

时间:2016-04-05 09:47:14

标签: php bash sed grep

我正在使用PHP并希望使用grep在字符'gi|HERE IS THE NUMBER|'之间提取数字并将其分配给变量。

该文件包含:

>gi|1786181|gb|AE000111|ECAE000111 Escherichia coli , thrL, thrA, thrB, thrC, yaaA, yaaJ, talB, mog, yaaH genes from bases 1 to 10596
>gi|1786192|gb|AE000112|ECAE000112 Escherichia coli , htgA, yaaI, dnaK, dnaJ, yi81_1, yi82_1

我想在这里提取数字:gi|1786181|gi|1786192|并将它们放在x和y变量中。

因此,输出将为:x=1786181y=1786192

我试试:

$x = shell_exec("C:\\cygwin64\\bin\\bash.exe --login -c \" grep -o 'gi\|[0-9]\|'  $file.txt >  $result.txt 2>&1\"");    

它不起作用。 有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

为什么在shell中使用url: '../Services/TourDates.ashx?TourID=<%%>'?使用preg_match()

public class ATourDateRep
{
    private DatabaseEntities model = new DatabaseEntities();
    public List<TourDate> GetById(int Id)
    {
        return model.TourDates.Where(e => e.TourId == Id).ToList();
    }
}

grep将返回类似下面的内容,数组中的第一项包含完整匹配,第二项只包含您所追求的值:

$input = file_get_contents('file.txt');
preg_match("/gi\|([0-9]+)\|/", $input, $matches);

在任何一种情况下,您都需要指定需要一个或多个整数:

$matches

答案 1 :(得分:0)

$str = 'gi|1786181|gb|AE000111|ECAE000111 Escherichia coli , thrL, thrA, thrB, thrC, yaaA, yaaJ, talB, mog, yaaH genes from bases 1 to 10596';
preg_match("/\|([0-9]+)\|/", $str, $matches);
print_r($matches);