是否有任何一种衬垫可以打印文件中仅包含字母和数字混合的行?
我尝试了以下。但这行不通。
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
如果我正确阅读了您的问题,您想要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
仅使用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))