如何查看搜索文本的行号?

如何查看搜索文本的行号?

假设我有一个名为 的文本文件,output.txt其中包含 146 万行数据。

27QL我想搜索文件中的文本。

如果文本存在,Linux 应返回行号。

我怎样才能做到这一点?

我可以用吗grep?如果是,怎么办?

答案1

grep实用程序有一个标准选项,这将导致它在其普通输出前面添加与模式匹配的-n行号。grep行号与行内容之间用冒号分隔。

grep -n -F -w '27QL' file

在这里,我还使用了非标准-w选项来仅搜索完整的单词,这意味着我们不会匹配127QLor 27QLA。通过-F,您可以得知grep您的模式是细绳而不是正则表达式。

要从输出中删除实际数据(即仅提取行号),请将输出传递给cut

grep -n -F -w '27QL' file |
cut -d : -f 1

答案2

您还可以使用sed

sed -n '/27QL/=' infile

sed 的开关-n是静默默认打印操作,并且=登录后/pattern/=只会打印哑光模式的行号。


甚至使用比/awk更强大的文本处理工具:grepsed

awk '/27QL/{ print NR }' infile

NR在awk中代表数量记录。

相关内容