仅使用grep搜索以#开头的行

时间:2018-10-24 21:58:35

标签: regex unix terminal grep

在我被踢之前,我想让你知道我在“ grep”上检查了几份文件,但找不到我要的东西,或者我的英语太有限了,无法理解。

我有很多降价文件。每个文档都包含一个始终位于第1行的第一级标题(#)。

我可以搜索^#并有效,但是如何告诉grep在以#开头的行中查找某些单词?

我想要这个

grep 'some words' file.markdown

还要指定该行以#开头。

1 个答案:

答案 0 :(得分:1)

您可以使用

grep '^# \([^ ].*\)\{0,1\}some words' file.markdown

或者,使用ERE语法

grep -E '^# ([^ ].*)?some words' file.markdown

详细信息

  • ^-一行的开头
  • #-一个#字符
  • \([^ ].*\)\{0,1\}-可选的模式序列(\(...\)是BRE语法中的捕获组,在ERE中是(...))(\{0,1\}是区间量词重复修改1或0次的模式):
    • [^ ]-除空格以外的任何字符
    • .*-任意0个以上的字符
  • some words-some words文本。

查看online grep demo

s="# Get me some words here
#some words here I don't want
# some words here I need"
grep '^# \([^ ].*\)\{0,1\}some words' <<< "$s"
# => # Get me some words here
#    # some words here I need