开发者

Searching string in a file and outputting the line number

开发者 https://www.devze.com 2023-03-09 03:10 出处:网络
awk \'$0 ~ str{print b}{b=$0}\' str=\"findme\" path_to_file with th开发者_高级运维is I can get the line before the found string\'s line.
awk '$0 ~ str{print b}{b=$0}' str="findme" path_to_file

with th开发者_高级运维is I can get the line before the found string's line.

How can I print its line number?


Use NR to get the current line (record) number:

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


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:

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


Here is a solution:

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

Or, if you don't mind a slightly different output, in which there are '--' separating groups of found lines:

grep -B1 findme path_to_file

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."


you can use echo $(awk '$0 ~ str{print b}{b=$0}' str="findme" path_to_file)

0

精彩评论

暂无评论...
验证码 换一张
取 消