Unix行计数命令

时间:2016-09-09 11:17:28

标签: unix

我有一个文件如下 -

打印一些文字
请求别的东西1 请求别的东西2
请求别的东西3
印刷的文字
请求别的东西4
要求别的东西5
印刷的文字
要求别的东西6
要求别的东西7
要求别的东西8
请求其他内容9

我需要以下输出 -

Printed sometext
3
Printed sometext
2
Printed sometext
4

有谁能让我知道我们怎么能实现这个目标?

3 个答案:

答案 0 :(得分:1)

awk '/line/{ print NR; exit }' input-file

上面的命令给出了输入文件中字符串行的出现行号。 现在,您可以获取包含分隔符文本的行号,并适当地减去它们,为您提供行数

edit:仅当分隔符文本不是分隔线

以外的任何其他行的一部分时才有效

答案 1 :(得分:1)

使用nl {filename}。首先使用catpipenlnl也将文件作为输入。

例如cat pgadmin.log | nl会显示如下内容。

   ...
   ...
   120  ERROR  : 11:46:32 AM: ERROR:  column reference "created_at" is ambiguous
   121  LINE 10: created_at as "Lead Creation Date",
   ...
   ...

有关详细信息,请参阅Unix平台上的man nl

答案 2 :(得分:1)

假设您的输入位于文件1.txt中,您需要计算除特定行之外的所有行(如示例中所示),然后您可以使用:

cat 1.txt | awk '{if ($0 == "Printed sometext") { if (count>0) print count; print $0; count = 0; } else { count++;} } END { if (count>0) print count;}'

它可以根据您的测试数据生成输出。