我的文字文件Progress Bar
如下所示
object UpdateLock=new object();
List<Action<object, UpdateArgs>> UpdateSubscribersList = new List<Action<object, UpdateArgs>>();
public void UpdateSubscribe(Action<object, UpdateArgs> action)
{
lock (UpdateLock)
{
UpdateSubscribersList.Add(action);
}
}
public bool UpdateUnSubscribe(Action<object, UpdatePortfolioArgs> action)
{
lock (UpdateLock)
{
return UpdateSubscribersList.Remove(action);
}
}
public virtual void onUpdate(UpdateArgs args)
{
lock (UpdateLock)
{
foreach (Action<object, UpdateArgs> action in UpdateSubscribersList)
{
action.BeginInvoke(args, null, null);
}
}
}
我想使用grep提取仅包含S-PA的行。我尝试了以下命令:
let imagePath = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true).appendingPathComponent("image.jpg")
但它给出的输出包括我不想要的所有条目。我想要以下输出
sample.txt
请指导我。提前谢谢。
答案 0 :(得分:4)
使用负向前瞻和后视。
$ grep -P '(?<![\w-])S-PA(?![\w-])' sample.txt
ID=S-PA.path1;Name=S-PA 69 ivcs
有效地,您将-
加入&#34;字&#34;用于字边界考虑。
(?<![\w-])
确保S-PA
前面没有单词字符或-
。
同样地(?![\w-])
确保以下字符相同。
答案 1 :(得分:2)
使用正则表达式。
grep -oE "S-PA (.+)" sample.txt
或
egrep -o "S-PA (.+)" sample.txt
答案 2 :(得分:2)
您似乎希望将=S-PA
与空格匹配。使用
grep '=S-PA ' sample.txt
或
grep '=S-PA[[:blank:]]' sample.txt
其中[[:blank:]]
匹配常规空格或制表符。