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

问题描述 投票:-1回答:1

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

???? 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'请求的示例输入和所需的输出。对于不包括在内,我表示歉意:

输入:

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

输出:

HDKSIDJIELSJ more stuff
LKAIIDKEJAHHLL more stuff
LQOEIDLKJV more stuff
POCEIDLKEKJSH more stuff
unix grep aix
1个回答
0
投票

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

使用

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

请参见online grep demo

grep

输出:

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

在这里,12ABID MNDFID 使-o仅输出匹配的子字符串,并且POSIX BRE模式匹配

  • grep-字符串开头
  • [^-四个字母数字字符]
  • [[[:alnum:]]\{4\}-一个ID子字符串
© www.soinside.com 2019 - 2024. All rights reserved.