awk '$0 ~ str{print b}{b=$0}' str="findme" path_to_file
有了这个,我可以在找到的字符串的行之前得到行
如何打印其行号?
使用NR
获取当前行(记录(编号:
awk '$0 ~ str{print NR-1 FS b}{b=$0}' str="findme" path_to_file
如果我正确解释了这个问题,并且您只想打印包含给定字符串的任何行之前的行的行号,您可以执行:
$awk'/fidme/{print NR-1}'/path/to/file
这里有一个解决方案:
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行。">
您可以使用echo $(awk '$0 ~ str{print b}{b=$0}' str="findme" path_to_file)