Unix 如何使用grep显示以同一单词开头和结尾的行

Unix 如何使用grep显示以同一单词开头和结尾的行,unix,grep,Unix,Grep,我试图弄清楚如何显示以“world”开头、以“world”结尾的行 我知道grep“^world”显示任何以world开头的行,而grep“world$”显示以world结尾的行。如果要匹配同一个单词,可以使用(如果支持)\w+匹配1+个单词字符和对捕获单词的反向引用 ^(\w+)\b.*\1$ ^字符串的开头 (\w+)在组1中捕获1+个单词字符 \b.*单词边界,匹配任意字符0+次 \1对组1的反向引用 $字符串结尾 | 比如说 grep -E '^(\w+)\b.*\1$' fi

我试图弄清楚如何显示以“world”开头、以“world”结尾的行


我知道grep“^world”显示任何以world开头的行,而grep“world$”显示以world结尾的行。

如果要匹配同一个单词,可以使用(如果支持)
\w+
匹配1+个单词字符和对捕获单词的反向引用

^(\w+)\b.*\1$
  • ^
    字符串的开头
    • (\w+)
      在组1中捕获1+个单词字符
  • \b.*
    单词边界,匹配任意字符0+次
  • \1
    对组1的反向引用
  • $
    字符串结尾
|

比如说

grep -E '^(\w+)\b.*\1$' file
要仅匹配
word
,您可以选择其他模式

grep -E '^(\w+)(\b.*\1)?$' file

|

@oguzismail我添加了一个附加项,该示例使用GNU grep。您想匹配
世界测试notworld
?还是
“一杯龙舌兰酒”
。可能为“世界测试世界”添加选项
i
。@Walter是的,我也这么做了,我想匹配“世界”。@第四只似乎有效但不适用于“世界”的鸟。如果这条线就是世界,它不是以世界开始和结束吗