Linux grep 只获取n,m个字符串

标签 linux awk grep

我有一个包含以下内容的文件,

TESTING
TSET24D
DSWEDFBG
WTSETO
MSDWEHLKGY

并希望 grep 只有 6 和 8 个字符长的字符串。

我试过下面的,

[root@server ~]# cat listfile | grep -o -w -E '^[[:alnum:]]{6,8}'
TESTING
TSET24D
DSWEDFBG
WTSETO
[root@server ~]#

这似乎在某些服务器上有效,并且它还会返回 6-8 之间的字符串。

任何想法请..

最佳答案

在您的正则表达式中,{6,8} 查找 6 到 8 次之间的重复(因此包括 7 次)。您需要使用竖线(在正则表达式中为 OR)将搜索拆分为 6 或 8 次。

$ grep -o -w -E '^[[:alnum:]]{6}|^[[:alnum:]]{8}' listfile
DSWEDFBG
WTSETO

关于Linux grep 只获取n,m个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43496176/

相关文章:

regex - 在文件和输出文件名中搜索具有特定文本的行(文件命令和 grep)

linux - 如何在groupwise中更改多个用户的密码?

linux - while(1) 线程是否有可能在不终止进程的情况下被终止?

string - 使用 awk 提取和拆分

linux - 修改文件中的文本(百万列,制表符分隔)- 删除除第一个选项卡之外的所有选项卡并在最后一列后面添加新列

heroku - Windows,heroku 配置 | grep MONGOLAB_URI

string - 如何匹配特定的列?

linux - 如何添加到 bash 脚本帮助选项 "yourscript --help"

c - Linux上 `ru_maxrss`的单位是什么?

linux - 从输出中提取文本并转换为 CSV