题外话: Linux 的时候看到 last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l 这个,想着能不能用一次 grep 就搞定,所以就想到了能不能用正则匹配出某行不包含某个单词(如 wtmp ),结果没有想出来。
js/^(?!.*wtmp)/
/^(?!.*wtmp)/
匹配出不包含, 这个难度对于正则而言应该是比较大的, 因为这个条件可能在这个位置条件成立了, 在下个位置可能就不成立! 但是正则却会把任何满足pattern的字符串返回针对你题目的例子, 我建议用awk实现:
awk
last | awk '!=wtpm&&/[A-Za-z]/{num++}END{print num}'
awk能够提供比较灵活的逻辑处理, 可读性也比较强, 相对于单一正则, 所以在题目中的场景, 我觉得awk是比较好的选择,但是如果是用其他语言实现, 可能就要参考别的语言的方式了
js
雷雷/^(?!.*wtmp)/
匹配出不包含, 这个难度对于正则而言应该是比较大的, 因为这个条件可能在这个位置条件成立了, 在下个位置可能就不成立! 但是正则却会把任何满足pattern的字符串返回
针对你题目的例子, 我建议用
awk
实现:awk
能够提供比较灵活的逻辑处理, 可读性也比较强, 相对于单一正则, 所以在题目中的场景, 我觉得awk是比较好的选择,但是如果是用其他语言实现, 可能就要参考别的语言的方式了