gpt4 book ai didi

regex - egrep\b 无法识别单引号

转载 作者:行者123 更新时间:2023-12-01 12:25:36 24 4
gpt4 key购买 nike

我正在尝试使用 egrep 列出文件中所有 3 个字母的单词。

示例输入;

点击

腰带

悬崖

不能

可以

不是


正则表达式;

egrep "\b[a-zA-Z]{3}\b"

我列出了 3 个字母的单词,但为什么不能显示在结果中?

编辑

我已经收到我原来问题的答案,我现在使用;

egrep '^[a-zA-Z]{3}$'

之所以可行,是因为我每行只有 1 个单词。我的问题现在更新了,因为这个答案有点脆弱。

如果输入不是每行 1 个单词而是按行和段落输入,我将如何搜索 3 个字母的单词?

最佳答案

如果每行有多个单词,则不能使用 anchor 。

如果您的 grep 支持 -P (PCRE) 选项,那么您可以使用先行正则表达式:

grep -oiP '\b[a-z]{3}(?=\s|$)' file

如果 -P 不可用,那么您可以使用:

grep -oiE '\b[a-z]{3}(\s|$)' file

第二个 grep 将有一个尾随空格。如果您也想删除它,请使用:

grep -oiE '\b[a-z]{3}(\s|$)' file | awk '{print $1}'

或者这是打印所有 3 个字母字段的 awk 解决方案:

awk '{for (i=1; i<=NF; i++) if (length($i)==3) print $i}' file

如果你有 gnu awk 那么你可以让它更短:

awk -v RS='[[:space:]]' 'length($0) == 3' file

关于regex - egrep\b 无法识别单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40185645/

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