【问题标题】:grep for a partial string, within a filegrep 用于文件中的部分字符串
【发布时间】:2020-05-11 01:58:48
【问题描述】:

我需要在一个纯文本文件中找到爱达荷州邮政缩写的所有实例,这些实例前面正好是四个字符,后面是任意数量的字符。显然,通配符不起作用,但这是我正在寻找的:

??????ID*

我知道我应该知道这一点,但我就是不明白。

这些都不起作用:

grep "[0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z]ID" filename
grep '^[0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][I][D]*' filename
grep '^[0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][I][D]$' filename
grep ....ID* filename
grep "....ID*" filename

我忘记了什么?

'root' 请求的示例输入和所需的输出。我很抱歉没有尽快包括在内:

输入:

servername HDKSIDJIELSJ more stuff
servername LKAIIDKEJAHHLL more stuff
servername SLKERILELLWELKM more stuff
servername WOIERISLKJD more stuff
servername LQOEIDLKJV more stuff
servername POCEIDLKEKJSH more stuff
servername SLKENCLEISJEHJ more stuff
servername LSKESCIEHAL more stuff

输出:

servername HDKSIDJIELSJ more stuff
servername LKAIIDKEJAHHLL more stuff
servername LQOEIDLKJV more stuff
servername POCEIDLKEKJSH more stuff

【问题讨论】:

  • 试试grep '^....ID'
  • 请添加示例输入和所需的输出。
  • root,我已经添加了请求的输入和输出。
  • 更正了条目。我在数据条目中遗漏了“服务器名称”字段。
  • 我的回答有帮助吗?

标签: unix grep aix


【解决方案1】:

您似乎提取了前 4 个字母数字字符,然后从行首提取了 ID

使用

grep -o '^[[:alnum:]]\{4\}ID' filename

online grep demo

s="12ABID More text...
MNDFID another line...
Nothing here";
grep -o '^[[:alnum:]]\{4\}ID' <<< "$s";

输出:

12ABID
MNDFID

这里,-o 使 grep 只输出匹配的子字符串,并且 POSIX BRE 模式匹配

  • ^ - 字符串开头
  • [[:alnum:]]\{4\} - 四个字母数字字符
  • ID - ID 子字符串

【讨论】:

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