awk '$0 ~ str{print b}{b=$0}' str="findme" path_to_file
有了这个,我可以在找到的字符串行之前得到这一行 如何打印其行号?
答案 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)