摘要:我有一个子字符串提取问题,我只是失败了。我有一个字符串,该字符串包含我要提取的人的名字的不确定的多个名称。在字符串中,这些子字符串定义得相当好,但是子字符串的随机数量,子字符串的随机长度以及我的中级Bash技能使我不知所措。
上下文:我已使用exiftool从DigiKam处理的文件中提取选中的标签,以生成我的源字符串。我认为这个事实对眼前的问题并不重要,但是可以保证完整性。
字符串示例
tagoutput="Tags List : Date/Month/March, Places/Our House, People/FirstName1 LastName1, People/FirstName2 LastName2, Date/Year/2009, Date/Day/22"
tagoutput="Tags List : People/FirstName1 LastName1, Date/Year/1970, Date/Month/Feburary, Places/Grandmas House"
注意:如您所见,字符串中的内容格式正确,但可能以随机顺序出现且数量未知。在上面的每个示例中,List和冒号之间还有一个供参考的FYI,其中有一个很大的空格(〜25个空格),此处的帖子会自动删除。
我需要的是:给定$tagoutput
,我想回显到控制台
FirstName1 LastName1
FirstName2 LastName2
...
对于中的每个名称$tagoutput
。我将其放在“对于目录循环中的每个文件”中,$tagoutput
在此之前我在提取$tagoutput
名称之前立即提取了这些内容。由于此问题是以文件为中心的,因此我选择使用Bash,但是如果此处的正确答案是使用更适合的语言(如Python),则不愿与之结婚。
使用GNU grep,您可以执行以下操作:
grep -Po ' People/\K[^,]*' <<< $tagoutput
这将匹配每次出现的People/
(以空格开头),并在其后提取零个或多个非逗号字符。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句