gpt4 book ai didi

linux - 大写的 Grep 语法

转载 作者:太空宇宙 更新时间:2023-11-04 09:05:14 29 4
gpt4 key购买 nike

我正在尝试用一个文件作为参数编写一个脚本,该脚本对文本文件进行 greps 以查找以大写字母开头且后面有 8 个字母的任何单词。我的语法很糟糕,所以我会向您展示我的代码,我相信这很容易解决。

grep -o '[A-Z][^ ]*' $1

我不确定如何指定:

a) 它以大写字母开头,并且

b) 这是一个 9 个字母的单词。

干杯

编辑:

作为编辑,我想添加我的新代码:

while read p
do
echo $p | grep -Eo '^[A-Z][[:alpha:]]{8}'
done < $1

我仍然无法让它工作,对我的新代码有什么帮助吗?

最佳答案

'[A-Z][^ ]*' 将匹配 A 和 Z 之间的一个字符,后跟零个或多个非空格字符。所以它会自己匹配任何 A-Z 字符。

使用\b来表示一个词的边界,在大括号内使用一个量词,例如:

grep '\b[A-Z][a-z]\{8\}\b'

如果您刚刚执行了 grep '[A-Z][a-z]\{8\}',它将匹配(例如)“aaaaHellosailor”。

我使用\{8\},大括号需要转义,除非你使用grep -E,也称为egrep,它使用扩展正则表达式。您正在使用的 Vanilla grep 使用基本正则表达式。另请注意,\b 不是标准的一部分,但通常受支持。

如果你在开头使用 ^ 而在结尾使用 $ 那么它不会在“A Wiltshire pig makes great sausages”中找到“Wiltshire”,它只会查找仅由 9 个字符的代词组成的行。

关于linux - 大写的 Grep 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13016961/

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