Grep特定长度的字符

时间:2018-07-28 07:54:54

标签: regex linux bash shell grep

假设我有一个文件foo.txt,其中包含某些内容:

abcds9912:        8c b2           1e12
asddb221          jj 7u 9i         e2e1

现在我只想grep 8c, b2, jj, 7u, 9i 即字符成对出现

到目前为止,我已经尝试过

cat foo.txt | grep -Eo '[a-z0-9]{2}'

但是没有用

4 个答案:

答案 0 :(得分:4)

您需要使用单词边界,可以使用:

\b[a-z0-9]{2}\b

您的命令是:

cat foo.txt | grep -Eo '\b[a-z0-9]{2}\b'

答案 1 :(得分:0)

以下内容也可能对您有帮助。

awk --re-interval -v RS=" " -v FS="" '/^[[:alnum:]]{2}$/' Input_file

由于我的awk版本为OLD,所以我正在使用--re-interval,如果您正在使用新版本的wk,则可以将其删除。

答案 2 :(得分:0)

 cat foo.txt | grep -E -w -o '\w{2}'

答案 3 :(得分:0)

您可以将单词边界与字符类结合使用来实现

$ cat foo.txt | grep -Eo '\b[[:alnum:]]{2}\b'

$ grep -Eo '\b[[:alnum:]]{2}\b' foo.txt