使用bash脚本,我需要从文本文件中搜索类似namespace MultipleSkype
{
class Program
{
static void Main(string[] args)
{
int InstanceNumbers = 0;
Console.WriteLine("Please Enter Instances of Skype to Open");
InstanceNumbers = Convert.ToInt32(Console.ReadLine());
createInstances(InstanceNumbers);
}
private static void createInstances(int instanceNumbers)
{
string fileName="";
string x86 = @"C:\Program Files\Skype\Phone\skype.exe";
string x64 = @"C:\Program Files (x86)\Microsoft\Skype for
Desktop\Skype.exe";
Console.WriteLine("Checking Version of Skype...");
if (checkIf86OR64(x86)) { fileName = "skype86.bat"; } else if
(checkIf86OR64(x64)) { fileName = "skype.bat"; }
for (int i = 0; i < instanceNumbers; i++)
{
Process proc = null;
try
{
proc = new Process();
proc.StartInfo.FileName = fileName;
proc.StartInfo.CreateNoWindow = false;
proc.Start();
proc.WaitForExit();
}
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace.ToString());
}
}
}
//Check that dir exists
private static bool checkIf86OR64(string dir)
{
if (File.Exists(dir))
{
return true;
}
return false;
}
}
}
的字符串,并将值version = '1.8.1-SNAPSHOT'
放入变量中。
我尝试使用下一个代码,但没有结果:
'1.8.1-SNAPSHOT'
怎么了?还有另一种方法吗?
一些文本文件:
version=$(grep -P "version\s?=\s?'([a-zA-Z.\d-]){5,20}?'" file.txt)
regex="'([a-zA-Z.\d-]){5,30}?'"
value=`expr match "$version" '([a-zA-Z.\d-]){5,30}?'`
需要将所需的字符串buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath('org.springframework.boot:spring-boot-gradle-plugin:1.5.2.RELEASE')
}
}
springBootVersion = '2.0.7.RELEASE'
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
// for Glassfish
//apply plugin: 'war'
jar {
baseName = 'work-space'
version = '1.8.1-SNAPSHOT'
}
放入变量中,以进行下一次操作。
答案 0 :(得分:2)
您可以使用
version="$(grep -oP "version\s*=\s*'\K[^']+" file)"
请参见online demo。
当您使用P
选项时,我假设您可以在grep
中使用PCRE regex。要输出匹配项,您还需要添加o
选项。
您需要的正则表达式为version\s*=\s*'\K[^']+
:
version
-匹配version
子字符串\s*=\s*
-=
内含0+空格'
-一个'
字符\K
-匹配重置运算符会丢弃到目前为止已匹配的所有文本[^']+
-除'
之外的1个或多个字符