是否有任何一个衬垫可以打印仅包含字母和混合字母的线条。文件中的数字?
我尝试了以下内容。但它没有成功。
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。
答案 0 :(得分:1)
请尝试以下操作:
grep -Eio '\b([a-z]+[0-9]|[0-9]+[a-z])[0-9a-z]*\b' test.log
答案 1 :(得分:1)
如果我正确地阅读了您的问题,您希望print
第三列($3
)与第三列匹配(~ / ... /
)字母字符[a-zA-Z]
和(&&
)一个数字字符([0-9]
)(按任意顺序),只有字母数字(!~ /[^a-zA-Z0-9]/
):
% awk '$3 ~ /[a-zA-Z]/ && $3 ~ /[0-9]/ && $3 !~ /[^a-zA-Z0-9]/ {print $3}' test.log
a1
bc12
或者,这将匹配以(^
)一个或多个(+
)字母字符开头的第三列,后跟并以($
)数字结束:
% awk '$3 ~ /^[a-zA-Z]+[0-9]+$/ {print $3}' test.log
a1
bc12
答案 2 :(得分:1)
仅使用grep
:
$ grep -io '[A-Z]\+[0-9]\+' test.log
a1
bc12
答案 3 :(得分:0)
不是正则表达式,但是......
print '\n'.join(x for x in mystring.split() if 0 < sum(map(str.isalpha, x)) < len(x))