【问题标题】:Grep command to get 2 character strings that start or end with a vowelgrep 命令获取以元音开头或结尾的 2 个字符串
【发布时间】:2018-02-09 05:02:24
【问题描述】:

如何忽略文本文件中不以元音开头或结尾的任何 2 个字母单词?

我尝试了几次,发现自己卡住了。下面的尝试旨在查找以元音开头或结尾的 2 个字母的单词。

 grep -Eio '\^[aeiou]{2\}|[aeiou]${2\}\b'

【问题讨论】:

  • 请发布一些具有预期结果的示例数据,
  • \^ 符号是可疑的;它在数据中查找文字插入符号。目前尚不清楚这与问题其余部分中找到的 2 个字母单词有何关系。标题说“2 个字符串”;身体说'2个字母的单词'。这些是完全不同的。您的要求非常不明确。

标签: bash shell command-line grep


【解决方案1】:

你在没有用或不需要的地方使用了非常慷慨的反斜杠。 一般grep -E一起使用时,有些字符在使用时具有“神奇”的意义没有反斜杠,当需要匹配字符本身时需要反斜杠。例如,^ 标记一行的开始,{ 指定重复规范的开始;和 \^\{ 分别匹配文字插入符号和左大括号。

虽然在某些情况下这是不正确的——<> 匹配字面,\<\> 匹配单词边界......这可能正是我们需要的。

所以我猜你正在寻找

grep -Eio '\<[^aeiou]{2}\>' file

查找位于单词边界之间的两个相邻字符,其中两个字符都不能是元音。

顺便说一句,${2} 没有办法做任何有用的事情;行尾不能跟任何东西,因为grep 一次只检查一行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多