在文件中搜索字符串并输出行号
awk '$0 ~ str{print b}{b=$0}' str="findme" path_to_file
这样我就可以得到找到的字符串行之前的行。
如何打印其行号?
awk '$0 ~ str{print b}{b=$0}' str="findme" path_to_file
with this I can get the line before the found string's line.
How can I print its line number?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用
NR
获取当前行(记录)号:Use
NR
to get the current line (record) number:如果我正确解释了问题,并且您只想打印包含给定字符串的任何行之前的行的行号,您可以执行以下操作:
If I interpret the question correctly, and you simply want to print the line number of the line that precedes any line containing a given string, you can do:
这是一个解决方案:
或者,如果您不介意输出略有不同,其中有“--”分隔找到的行组:
在这种情况下,您在文件“path_to_file”中搜索字符串“findme” 。 -B1 标志表示“在此之前还打印 1 行”。
Here is a solution:
Or, if you don't mind a slightly different output, in which there are '--' separating groups of found lines:
In this case, you search for the string "findme" within the file 'path_to_file'. The -B1 flag says, "also prints 1 line before that."
您可以使用 echo $(awk '$0 ~ str{print b}{b=$0}' str="findme" path_to_file)
you can use
echo $(awk '$0 ~ str{print b}{b=$0}' str="findme" path_to_file)