我有一个文件如下 -
打印一些文字
请求别的东西1
请求别的东西2
请求别的东西3
印刷的文字
请求别的东西4
要求别的东西5
印刷的文字
要求别的东西6
要求别的东西7
要求别的东西8
请求其他内容9
我需要以下输出 -
Printed sometext
3
Printed sometext
2
Printed sometext
4
有谁能让我知道我们怎么能实现这个目标?
答案 0 :(得分:1)
awk '/line/{ print NR; exit }' input-file
上面的命令给出了输入文件中字符串行的出现行号。 现在,您可以获取包含分隔符文本的行号,并适当地减去它们,为您提供行数
edit:仅当分隔符文本不是分隔线
以外的任何其他行的一部分时才有效答案 1 :(得分:1)
使用nl {filename}
。首先使用cat
和pipe
到nl。 nl
也将文件作为输入。
例如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;}'
它可以根据您的测试数据生成输出。