Unix grep表示文件中的部分字符串

Unix grep表示文件中的部分字符串,unix,grep,aix,Unix,Grep,Aix,我需要在一个平面文本文件中查找爱达荷州邮政缩写的所有实例,该文件的前面正好有四个字符,后面跟着任意数量的字符。显然,通配符不起作用,但这正是我想要的: 身份证* 我知道我应该知道,但我就是不明白 这些措施不起作用: 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-

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

身份证*

我知道我应该知道,但我就是不明白

这些措施不起作用:

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

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

使用

见:

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

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

尝试
grep'^…ID'
请添加示例输入和所需输出。root,我已添加所需输入和输出。更正了条目。我在数据条目中遗漏了“servername”字段。我的回答有帮助吗?
grep -o '^[[:alnum:]]\{4\}ID' filename
s="12ABID More text...
MNDFID another line...
Nothing here";
grep -o '^[[:alnum:]]\{4\}ID' <<< "$s";
12ABID
MNDFID