【发布时间】:2014-01-05 01:07:27
【问题描述】:
在 Ubuntu 10.04.4 LTS 上,我做了如下的小测试,得到了令人惊讶的结果:
首先,我创建了一个包含 5 行的文件并将其命名为 a.txt:
echo -e "1\n2\n3\n4\n5" > a.txt
$ cat a.txt
1
2
3
4
5
然后我运行wc 来统计行数
$ wc -l a.txt
5 a.txt
但是,当我运行 grep 来计算有换行符的行数时,我得到了一个我不明白的答案:
$ grep -c -P '\n' a.txt
3
我的问题是:grep 是如何得到这个号码的?不应该是4吗?
【问题讨论】:
-
在另一个 Ubuntu 系统上,我做了同样的测试,
grep返回 0。 -
它应该返回 0,grep 只会搜索 within 一行。它不应该看到换行符。这 3 的来源令人费解。
-
不,假设是错误的;如果 grep 确实计算换行符,它将是 5 而不是 4。
echo将再添加一个换行符。如果您不希望echo发出换行符,则需要-n选项。 -
既然有
wc -l,为什么还要使用grep?
标签: linux bash shell unix grep