如何使用bash脚本查找字符串出现的行号?
例如,如果文件看起来像这样,
Hello I am Isaiah
This is a line of text.
This is another line of text.
我运行脚本来查找字符串“line”,它会输出数字2,因为这是第一次出现。
答案 0 :(得分:39)
鉴于您的示例仅打印第一次出现的字符串的行号,您可能正在寻找:
awk '/line/{ print NR; exit }' input-file
如果您确实想要所有出现(例如,如果您的示例的所需输出实际上是“2 \ n3 \ n”),请省略exit
。
答案 1 :(得分:4)
我喜欢Siddhartha对OP的评论。为什么他没有把它作为答案发布,这让我感到安慰。
我通常只想要第一行的行号来显示我正在寻找的内容。
lineNum="$(grep -n "needle" haystack.txt | head -n 1 | cut -d: -f1)"
解释:在grep之后,只抓住第一行( num:line ), cut 冒号 d < / strong> elimiter并抓住第一个 f ield