假设我有一个名为 的文本文件,output.txt
其中包含 146 万行数据。
27QL
我想搜索文件中的文本。
如果文本存在,Linux 应返回行号。
我怎样才能做到这一点?
我可以用吗grep
?如果是,怎么办?
答案1
该grep
实用程序有一个标准选项,这将导致它在其普通输出前面添加与模式匹配的-n
行号。grep
行号与行内容之间用冒号分隔。
grep -n -F -w '27QL' file
在这里,我还使用了非标准-w
选项来仅搜索完整的单词,这意味着我们不会匹配127QL
or 27QLA
。通过-F
,您可以得知grep
您的模式是细绳而不是正则表达式。
要从输出中删除实际数据(即仅提取行号),请将输出传递给cut
:
grep -n -F -w '27QL' file |
cut -d : -f 1
答案2
您还可以使用sed
:
sed -n '/27QL/=' infile
sed 的开关-n
是静默默认打印操作,并且=
登录后/pattern/=
只会打印哑光模式的行号。
甚至使用比/awk
更强大的文本处理工具:grep
sed
awk '/27QL/{ print NR }' infile
NR
在awk中代表氮数量右记录。