在文件中搜索字符串并输出行号

时间:2011-05-28 11:26:11

标签: file shell awk grep

awk '$0 ~ str{print b}{b=$0}' str="findme" path_to_file

有了这个,我可以在找到的字符串行之前得到这一行 如何打印其行号?

4 个答案:

答案 0 :(得分:4)

使用NR获取当前行(记录)编号:

awk '$0 ~ str{print NR-1 FS b}{b=$0}' str="findme" path_to_file

答案 1 :(得分:3)

如果我正确解释了问题,并且您只想打印包含给定字符串的任何行之前的行号,您可以这样做:

$ awk '/findme/{print NR - 1}' /path/to/file

答案 2 :(得分:1)

这是一个解决方案:

awk '$0 ~ str{print b;print}{b=$0}' str="findme" path_to_file

或者,如果您不介意略有不同的输出,其中有' - '分隔找到的行组:

grep -B1 findme path_to_file

在这种情况下,您在文件'path_to_file'中搜索字符串“findme”。 -B1 标志表示“在此之前也打印1行。”

答案 3 :(得分:-1)

您可以使用echo $(awk '$0 ~ str{print b}{b=$0}' str="findme" path_to_file)