如何在终端中定位文件中匹配特定关键词/字符串的行号?
终端定位目标内容行号的单行方案
嘿,这事儿用grep命令就能一步搞定,单行命令就能同时找出你要的三个内容所在的行号:
grep -n -e "ordinaryStuff();" -e "extraordinaryStuff();" -e "//a comment whoo!" text.txt
命令细节说明:
-n:让输出结果附带对应的行号,这正是你需要的核心功能-e:用来指定多个匹配模式,这样我们可以一次性匹配三个目标内容,不用分开执行多次命令- 最后跟上你的目标文件名
text.txt就行
如果想要匹配所有注释行(而不是固定的那一条注释),可以把第三个模式改成匹配任意以//开头的内容,命令调整为:
grep -n -e "ordinaryStuff();" -e "extraordinaryStuff();" -e "//.*" text.txt
举个实际例子,假设你的text.txt里内容是:
void func() { ordinaryStuff(); extraordinaryStuff(); //a comment whoo! }
执行第一个命令后,输出会是:
1:void func() { ordinaryStuff(); extraordinaryStuff(); //a comment whoo! }
因为这三个内容都挤在第1行,所以会显示这一行的行号和完整内容,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Pranshu
相关产品推荐
相关产品推荐

