使用 Bash 脚本查找文件中字符串的行号

新手上路,请多包涵

如何使用 bash 脚本查找出现字符串的行号?

例如,如果一个文件看起来像这样,

 Hello I am Isaiah
This is a line of text.
This is another line of text.

我运行脚本来查找字符串“line”,它会输出数字 2,因为它是第一次出现。

原文由 David L. Rodgers 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 691
2 个回答

鉴于您的示例仅打印字符串第一次出现的行号,也许您正在寻找:

 awk '/line/{ print NR; exit }' input-file

如果您确实想要所有出现(例如,如果您的示例的所需输出实际上是“2\n3\n”),请省略 exit

原文由 William Pursell 发布,翻译遵循 CC BY-SA 3.0 许可协议

我喜欢悉达多对 OP 的评论。为什么他没有将其发布为答案使我无法理解。

我通常只想要显示我正在寻找的第一行的行号。

 lineNum="$(grep -n "needle" haystack.txt | head -n 1 | cut -d: -f1)"

解释: 在 grep 之后,只抓取第一行( num:line ),用冒号 d 分隔符 剪切 并抓取第一个 字段

原文由 hanzo2001 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题