我需要在平面文本文件中找到爱达荷州的邮政缩写的所有实例,这些实例的前面紧跟四个字符,后面紧跟任意数量的字符。显然,通配符不起作用,但这是我想要的:
???? 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
您似乎从行的开头提取了前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
子字符串