【发布时间】:2013-09-05 03:31:10
【问题描述】:
为什么
grep -c '^\n' myfile.txt
当文件中有空行时返回0?
如果有空行,那就换行开始吧?
如果我错了,请纠正我。
【问题讨论】:
为什么
grep -c '^\n' myfile.txt
当文件中有空行时返回0?
如果有空行,那就换行开始吧?
如果我错了,请纠正我。
【问题讨论】:
grep 并像这样计算空行数:
grep -c "^$" myfile.txt
由于\n 被视为行尾,您需要使用行开始和行结束"^$"
【讨论】:
匹配行尾的正则表达式是$,而不是\n(因为grep 一次工作一行,它会忽略行间的换行符)。
grep -c '^$' myfile.txt
【讨论】:
$ 是匹配字符串结尾的 RE 字符,而不是行尾。 grep 恰好将输入的每一行视为一个单独的字符串,因此使用 grep 时,每个字符串结尾 ($) 都会出现在行结尾但其他工具的行为不同的地方。 $ 在所有工具中总是意味着 the end of the string。
The regular expression to match the end of the line is $ 和grep ... ignores the newlines between lines 的陈述。
-o grep 选项似乎忽略了空行。
-c 的其他答案都是正确的。
如果要查看文件中的空行是多少号:
grep -n '^$' myfile.txt
例如:
grep -n '^$' /usr/share/wordlists/rockyou.txt
4751:
34329:
50383:
99361:
154363:
231236:
562997:
2459758:
14344383:
14344384:
14344385:
(如果你想删除它们:sed -i '/^$/d' myfile.txt)
:)
【讨论】: