以下 grep
grep -r -e -n coll *
将显示
fullpath/filename: <tag-name>coll</tag-name>
我想知道哪一行有以下文本,我尝试添加-n
,但没有成功。我尝试添加 | grep -n *
,但结果却很奇怪。
我希望看到的(我不关心格式)是
fullpath/filename:10: <tag-name>coll</tag-name>
答案1
不需要 -r 和 -e!
获取模式的行号!
grep -n "pattern" file.txt
如果您只想获取行号作为输出,请向其中添加另一个 grep 命令!
grep -n "pattern" file.txt | grep -Eo '^[^:]+'
答案2
您应该-e
在选项列表的末尾添加:grep -rne coll *
答案3
在特定文件中 grep 一个模式,并获取匹配的行:
grep -n <Pattern> <File> | awk -F: '{ print $1 }' | sort -u
cut
或者按照@wjandrea 的建议使用:
grep -n <Pattern> <File> | cut -f1 -d: | sort -u
在哪里
<Pattern>
是一个带引号的 glob 模式(使用-E
正则表达式的选项);<File>
是您感兴趣的文件;- 第一个管道
awk ...
过滤 grep 输出中的行号(:
每行之前); - 第二个管道确保行号只出现一次。
答案4
#这仅显示行号。 #i --> 不区分大小写, n --> 行号 var="APPLE";targetFile="targetFile.txt" numLin = $(grep -in $var $targetFile | cut -d':'-f1); 回显 $numLine;