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))