題外話: Linux 的時候看到last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l 這個,想著能不能用一次grep 就搞定,所以就想到了能不能用正規匹配某行不包含某個單字(如wtmp ),結果沒有想出來。
为情所困2017-05-24 11:34:15
匹配出不包含, 這個難度對於正則而言應該是比較大的, 因為這個條件可能在這個位置條件成立了, 在下個位置可能就不成立! 但是正則卻會把任何滿足pattern的字符串返回
針對你題目的例子, 我建議用awk
實現:
last | awk '!=wtpm&&/[A-Za-z]/{num++}END{print num}'
awk
能夠提供比較靈活的邏輯處理, 可讀性也比較強, 相對於單一正則, 所以在題目中的場景, 我覺得awk是比較好的選擇,但是如果是用其他語言實現, 可能就要參考別的語言的方式了