user366312 Asked: 2022-02-26 23:22:39 +0800 CST2022-02-26 23:22:39 +0800 CST 2022-02-26 23:22:39 +0800 CST 如何查看搜索文本的行号? 772 假设,我有一个名为的文本文件output.txt,其中包含 146 万行数据。 我想27QL在文件中搜索文本。 如果文本存在,Linux 应该返回行号。 我怎样才能做到这一点? 我可以使用grep吗?如果是,如何? grep search 2 个回答 Voted Best Answer they 2022-02-26T23:33:00+08:002022-02-26T23:33:00+08:00 该grep实用程序有一个标准选项 ,-n这将导致它在其普通输出前面加上与grep模式匹配的行号。行号将用冒号与行的内容分隔。 grep -n -F -w '27QL' file 在这里,我还使用了 non-standard-w选项来仅搜索完整的单词,这意味着我们不会匹配127QLor 27QLA。使用-F,你告诉grep你你的模式是一个字符串而不是一个正则表达式。 要从输出中删除实际数据(即仅提取行号),请将输出传递给cut: grep -n -F -w '27QL' file | cut -d : -f 1 αғsнιη 2022-02-27T00:00:51+08:002022-02-27T00:00:51+08:00 您还可以使用sed: sed -n '/27QL/=' infile sed的开关-n使默认打印操作静音,并且=登录/pattern/=它只会打印乱码图案的行号。 甚至在/上使用awk更强大的文本处理工具:grepsed awk '/27QL/{ print NR }' infile NR在 awk 中表示记录的数量。
该
grep
实用程序有一个标准选项 ,-n
这将导致它在其普通输出前面加上与grep
模式匹配的行号。行号将用冒号与行的内容分隔。在这里,我还使用了 non-standard
-w
选项来仅搜索完整的单词,这意味着我们不会匹配127QL
or27QLA
。使用-F
,你告诉grep
你你的模式是一个字符串而不是一个正则表达式。要从输出中删除实际数据(即仅提取行号),请将输出传递给
cut
:您还可以使用
sed
:sed的开关
-n
使默认打印操作静音,并且=
登录/pattern/=
它只会打印乱码图案的行号。甚至在/上使用
awk
更强大的文本处理工具:grep
sed
NR
在 awk 中表示记录的数量。