gpt4 book ai didi

bash - Grep - 如何仅输出捕获组的内容

转载 作者:行者123 更新时间:2023-12-03 18:05:29 26 4
gpt4 key购买 nike

我试图找到一种方法让 grep 只输出捕获组的内容。例如,如果我有以下文件:

hello1, please match me
hello2, please do not match me

我想

grep -Eo '(hello[0-9]+), please match me' file

输出 hello1 .但是它输出 hello1, please match me .

现在,我知道 grep -Po 'hello[0-9]+(?=, please match me)'可以解决问题,但我认为必须有一种方法可以简单地返回捕获组,但我找不到任何信息(在网上和 man grep 中)。

是否有可能,或者捕获组仅用于反向引用?如果没有办法做到这一点,我会觉得很奇怪。

感谢您的时间,并随时批评这篇文章的构建方式!

最佳答案

有人问了这个问题 ten years ago ,所以我不会将其标记为重复。另外我注意到没有给出 sed 解决方案,因为 OP 没有给出答案:

sed -nr 's/(hello[0-9]+), please match me/\1/p' test.txt
  • -n 代表安静(除非明确要求,否则不会打印任何内容)
  • -r 允许使用扩展正则表达式(此处避免在括号前使用 \)
  • s/reg/repl/p 命令的意思是“如果正则表达式 reg 匹配当前行,用捕获的文本替换它 repl ,并打印它( /p )”
  • 关于bash - Grep - 如何仅输出捕获组的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58379142/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com