SED:返回的行数

时间:2014-08-31 06:43:13

标签: regex bash sed grep

使用以下文字的文件jungle.txt ...

A lion sleeps in the jungle
A lion sleeps tonight
A tiger awakens in the swamp
The parrot observes
Wimoweh, wimoweh, wimoweh, wimoweh

......可以进行GREP搜索...

$ grep lion jungle.txt

...或SED搜索...

$ sed "/lion/p" jungle.txt

...找到模式的出现("狮子"在这种情况下)。

有一些简单的方法来获得一些返回的行吗?或者至少知道发现了超过1个?和往常一样,我先搜索了很多,但令人惊讶的是没有回答。

谢谢!

4 个答案:

答案 0 :(得分:6)

grep可以计算匹配的行数:

grep -c 'lion' file

输出:

2

语法:

-c:抑制正常输出;而是为每个输入文件打印匹配行的计数。使用-v, - inverse-match选项(见下文),计算不匹配的行。 (-c由POSIX指定。)

答案 1 :(得分:2)

这可能适合你(GNU sed):

sed '/lion/!d' file | sed '$=;d'

或者如果您愿意:

sed -n '/lion/p' file | sed -n '$='

N.B。如果文件为空或第一个sed命令找不到任何内容,则第二个sed命令的结果为空。

答案 2 :(得分:2)

您可以使用awk

awk '/lion/ {a++} END {print a+0}'
2

但我想说最好的解决方案是Cyros使用grep -c 'lion' file

发布的解决方案

答案 3 :(得分:1)

只需将grep命令输出传递给wc- l命令即可​​计算返回的行数

$ grep 'lion' file | wc -l
2

来自wc --help

-l, --lines            print the newline counts