如何打印字符串出现在文件中的行号?

Tay*_*lor 12 shell awk

我有一个特定的单词,我想找出我的文件中出现的单词行号.

这是在ac shell脚本中发生的.

我一直试图用awk来寻找行号,但到目前为止我还没有能够.我也希望将该行号分配给变量.

Joh*_*024 18

使用grep

word在文件中查找并打印行号,请使用以下-n选项grep:

grep -n 'word' file
Run Code Online (Sandbox Code Playgroud)

这将打印行号和它匹配的行.

使用awk

这将打印word文件出现在文件中的行数:

awk '/word/{print NR}' file
Run Code Online (Sandbox Code Playgroud)

这将打印行号和word出现的行:

awk '/word/{print NR, $0}' file
Run Code Online (Sandbox Code Playgroud)

您可以替换word为您喜欢的任何正则表达式.

这个怎么运作:

  • /word/

    这选择包含的行word.

  • {print NR}

    对于选定的行,将打印行号(NR表示记录号).您可以更改此信息以打印您感兴趣的任何信息.因此,{print NR, $0}将打印行号后跟行本身,$0.

将行号分配给变量

使用命令替换:

n=$(awk '/word/{print NR}' file)
Run Code Online (Sandbox Code Playgroud)

使用shell变量作为模式

假设我们要查找的正则表达式是在shell变量中url:

awk -v x="$url" '$0~x {print NR}' file
Run Code Online (Sandbox Code Playgroud)

和:

n=$(awk -v x="$url" '$0~x {print NR}' file)
Run Code Online (Sandbox Code Playgroud)