Regex 打印仅包含字母和字母组合的列;数字

Regex 打印仅包含字母和字母组合的列;数字,regex,shell,awk,grep,Regex,Shell,Awk,Grep,文件中只包含字母和数字的行是否有一行可以打印 我尝试了以下方法。但这不起作用 awk '{print $3}' test.log | grep -o '.[0-9][a-zA-Z]*' 编辑: test.log的内容: aaa bbb 1 ccc aaa mmm a1 nnn ooo bbb bc12 dm 我打算在这里打印:a1和bc12。尝试以下内容: grep -Eio '\b([a-z]+[0-9]|[0-9]+[a-z])[0-9a-z]*\b' test.log 如果我

文件中只包含字母和数字的行是否有一行可以打印

我尝试了以下方法。但这不起作用

awk '{print $3}' test.log | grep -o '.[0-9][a-zA-Z]*' 
编辑

test.log的内容:

aaa bbb 1 ccc 
aaa mmm a1 nnn 
ooo bbb bc12 dm 
我打算在这里打印:a1和bc12。

尝试以下内容:

grep -Eio '\b([a-z]+[0-9]|[0-9]+[a-z])[0-9a-z]*\b' test.log

如果我没有看错你的问题,你想
打印第三列(
$3
),其中第三列匹配(
~/…/
)字母字符
[a-zA-Z]
和(
&
)数字字符(
[0-9]
)(按任何顺序)和字母数字(
!~/[a-zA-Z0-9]/
):

或者,这将匹配第三列,其中以(
^
)一个或多个(
+
)字母字符开头,后跟(
$
)数字并以(
$
)结束:


仅使用
grep

$ grep -io '[A-Z]\+[0-9]\+' test.log
a1
bc12
不是正则表达式,而是

print '\n'.join(x for x in mystring.split() if 0 < sum(map(str.isalpha, x)) < len(x))
print'\n'.join(如果0
是否打印整行?那可能是grep-E“^[a-zA-Z0-9]+$”test.logI编辑了我的问题。很抱歉
$ grep -io '[A-Z]\+[0-9]\+' test.log
a1
bc12
print '\n'.join(x for x in mystring.split() if 0 < sum(map(str.isalpha, x)) < len(x))