首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于关键字w/ Bash提取字符串中的元素

基于关键字w/ Bash提取字符串中的元素
EN

Stack Overflow用户
提问于 2017-07-19 10:05:40
回答 1查看 13关注 0票数 0

我正在自动化一个硬件任务,并且我正在使用的一个工具输出要连接的串行设备的列表。格式如下:

可用的设备(a):/dev/stuff

可选设备(b):/dev/西瓜

可用的设备(c):/dev/stuff

我需要找到出现“西瓜”的那一行,然后提取括号中的字母。因此,在这种情况下,它将是"b“。然而,这个顺序并不能保证被保存下来(这就是为什么我必须用“西瓜”来搜索)。

EN

回答 1

Stack Overflow用户

发布于 2017-07-19 10:18:54

你可以用sed和反向引用很容易做到这一点,例如

代码语言:javascript
复制
$ sed -n '/watermelon/s/^[^(]*(\([^)]*\).*$/\1/p' file
b

哪里

  • sed -n禁止正常打印行,将行与西瓜匹配,
  • s/find/replace/ -正常替换选项
  • /watermalon/
    • find ^[^(]*(\([^)]*\).*$ what in parens,并使用保存为first referent

的内容另存为first reference

  • replace \1

  • p打印结果。

如果您必须使用bash,那么您可以使用[[ ]]=~运算符以及通过删除子字符串进行参数扩展,例如

代码语言:javascript
复制
while read -r line; do 
    [[ $line =~ watermelon ]] && { tmp="${line#*\(}"; echo "${tmp%)*}"; }
done < file

输出

代码语言:javascript
复制
b
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45179814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档