search - Grep 部分搜索但打印整个匹配的单词
问题描述
我有这种制表符分隔格式的数据-
Sample1_iu Sample2_id Sample3_ab 233_Sample4_ss .... PART_Sample1442_22
现在,我只有样本 ID,即只有部分匹配的信息。当我用 grep 搜索时,我想查看整个单词。
前任。当我用 grep 搜索“Sample2”时,我希望输出为“Sample2_id”
grep -w 和 grep -o 打印匹配的单词。由于数据是制表符分隔的,因此我无法定义正则表达式来正确隔离信息。我什至应该使用 grep 还是尝试其他方法?
解决方案
$ s='Sample1_iu Sample2_id Sample3_ab 233_Sample4_ss .... PART_Sample1442_22'
# with GNU grep
$ echo "$s" | grep -wo '\w*Sample2\w*'
Sample2_id
# if \w isn't supported
$ echo "$s" | grep -wo '[[:alnum:]_]*Sample2[[:alnum:]_]*'
Sample2_id
如果要匹配制表符以外的任何字符,可以使用这些:
# GNU grep with PCRE available
grep -woP '[^\t]*Sample2[^\t]*'
# with a shell that supports $'..' quoting
grep -wo $'[^\t]''*Sample2'$'[^\t]*'
推荐阅读
- r - R:插入符号包和功能数据
- hybris - 提交 ON 的 hybris 直接 sql 查询没有影响
- reactjs - 如何在url中传递参数并用它调用api?
- sql - 如何根据SQL中的某些条件将同一表的两行或多行合并为列?
- php - PHP:如何在检查常量是否存在时避免定义()?
- arrays - 遍历 MongoDB 集合中的每个时间戳
- java - 如何从我的 FXML 控制器类中关闭 Jframe?
- scala - 单例对象可以扩展特征吗?
- java - 如何解决Android WebView中的黑屏?
- javascript - Javascript重构,可以使用map & filter