Tim*_*Tim 6 awk regular-expression
为什么不awk '/^[^\t]/{a++}END{print a}'计算空行(即只有换行符的行)?不是以\ttab开头的空行吗?
ilk*_*chu 21
查找不包含 X 的内容与查找不包含 X 的行不同。
如果我们想查找以制表符开头的行,我们可以使用 regex /^\t/。要找到相反的情况,即不以制表符开头的行,将否定放在整个模式中(而不是在字符类中)可能是最简单的:
awk '!/^\t/ {a++} END {print a+0}'
Run Code Online (Sandbox Code Playgroud)
a+0 这样计数为零的结果为零,而不是空。
另一方面,正则表达式[^\t]需要一些字符,它不能是制表符。
如果要匹配空行,则/^$/或$0 == ""。或者匹配空行或仅带有空格的行/^[[:space:]]*$/。
Hau*_*ing 20
原因是[^\t]需要一个字符。换行符 ( $) 不算作字符。你需要这个:
awk '/^([^\t]|$)/{a++}END{print a}'
Run Code Online (Sandbox Code Playgroud)